CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: https://medaka.5ch.net/php/)
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
荒らしはスルー推奨。
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
www.perl.org/get.html
Download Latest Stable Source (5.28.1)
▼前スレ
Perlについての質問箱 61箱目
http://toro.5ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
http://toro.5ch.net/test/read.cgi/tech/1385039352/
Perlについての質問箱 63箱目
https://mevius.5ch.net/test/read.cgi/tech/1392820583/
探検
Perlについての質問箱 64箱目
■ このスレッドは過去ログ倉庫に格納されています
2019/02/01(金) 09:44:37.18ID:1/Kr4Qjk
2019/02/01(金) 09:44:58.17ID:1/Kr4Qjk
【本】
初めてのPerl 第7版(リャマ)[2018年01月 発行]
https://www.oreilly.co.jp/books/9784873118246/
続・初めてのPerl 改訂第2版 [2013年08月 発行]
https://www.oreilly.co.jp/books/9784873116280/
マスタリングPerl [2009年03月 発行]
https://www.oreilly.co.jp/books/9784873113975/
Effective Perl 第2版 [発売日:2015年02月16日]
https://www.shoeisha.co.jp/book/detail/9784798139814
もっと自在にサーバを使い倒す 業務に役立つPerl [2012年4月11日発売]
http://gihyo.jp/book/2012/978-4-7741-5025-3
モダンPerl入門 [2009/2/10]
https://www.amazon.co.jp/dp/4798119172/
モダンPerl入門 増補改訂版(仮)[2014年1月予定]
http://codezine.jp/book/modernperl2
Perl CPANモジュールガイド [2011/4/8]
https://www.amazon.co.jp/dp/486267108X
【オンラインマニュアル】
最新のドキュメント: https://metacpan.org/release/perl
perldoc.jp: http://perldoc.jp/
perldoc.perl.org: http://perldoc.perl.org/
初めてのPerl 第7版(リャマ)[2018年01月 発行]
https://www.oreilly.co.jp/books/9784873118246/
続・初めてのPerl 改訂第2版 [2013年08月 発行]
https://www.oreilly.co.jp/books/9784873116280/
マスタリングPerl [2009年03月 発行]
https://www.oreilly.co.jp/books/9784873113975/
Effective Perl 第2版 [発売日:2015年02月16日]
https://www.shoeisha.co.jp/book/detail/9784798139814
もっと自在にサーバを使い倒す 業務に役立つPerl [2012年4月11日発売]
http://gihyo.jp/book/2012/978-4-7741-5025-3
モダンPerl入門 [2009/2/10]
https://www.amazon.co.jp/dp/4798119172/
モダンPerl入門 増補改訂版(仮)[2014年1月予定]
http://codezine.jp/book/modernperl2
Perl CPANモジュールガイド [2011/4/8]
https://www.amazon.co.jp/dp/486267108X
【オンラインマニュアル】
最新のドキュメント: https://metacpan.org/release/perl
perldoc.jp: http://perldoc.jp/
perldoc.perl.org: http://perldoc.perl.org/
2019/02/01(金) 09:45:16.42ID:1/Kr4Qjk
[少し古めの良書]
プログラミングPerl 第3版 VOLUME 1,2(駱駝)[2002年09月 発行]
https://www.oreilly.co.jp/books/4873110963/
https://www.oreilly.co.jp/books/4873110971/
Perlクックブック 第2版 VOLUME 1,2 [2004年09月 発行]
https://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス [2006年08月 発行]
https://www.oreilly.co.jp/books/4873113008/
Perl Hacks [2007年01月 発行]
https://www.oreilly.co.jp/books/9784873113142/
実用 Perlプログラミング 第2版 [2006年03月 発行]
https://www.oreilly.co.jp/books/487311280X/
プログラミングPerl 第3版 VOLUME 1,2(駱駝)[2002年09月 発行]
https://www.oreilly.co.jp/books/4873110963/
https://www.oreilly.co.jp/books/4873110971/
Perlクックブック 第2版 VOLUME 1,2 [2004年09月 発行]
https://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス [2006年08月 発行]
https://www.oreilly.co.jp/books/4873113008/
Perl Hacks [2007年01月 発行]
https://www.oreilly.co.jp/books/9784873113142/
実用 Perlプログラミング 第2版 [2006年03月 発行]
https://www.oreilly.co.jp/books/487311280X/
2019/02/01(金) 09:45:35.14ID:1/Kr4Qjk
【日本語、Unicode関連】
Encodeモジュール
https://metacpan.org/release/Encode
第31回 encoding:いつまでもjperlから抜け出せない方に
http://gihyo.jp/dev/serial/01/modern-perl/0031
第32回 Encode:日本語だけ扱えればよいのではなく
http://gihyo.jp/dev/serial/01/modern-perl/0032
perlunifaq - Perl Unicode FAQ
http://perldoc.jp/docs/perl/5.18.1/perlunifaq.pod
perlunicode - Perl における Unicode サポート
http://perldoc.jp/docs/perl/5.12.1/perlunicode.pod
【モジュール】
Search the CPAN - metacpan.org: https://metacpan.org/
【Perl環境構築】
plenv
https://github.com/tokuhirom/plenv
cpanm
https://metacpan.org/pod/release/MIYAGAWA/App-cpanminus-1.7001/lib/App/cpanminus.pm
http://perldoc.jp/docs/modules/App-cpanminus-1.7001/lib/App/cpanminus/fatscript.pod
Encodeモジュール
https://metacpan.org/release/Encode
第31回 encoding:いつまでもjperlから抜け出せない方に
http://gihyo.jp/dev/serial/01/modern-perl/0031
第32回 Encode:日本語だけ扱えればよいのではなく
http://gihyo.jp/dev/serial/01/modern-perl/0032
perlunifaq - Perl Unicode FAQ
http://perldoc.jp/docs/perl/5.18.1/perlunifaq.pod
perlunicode - Perl における Unicode サポート
http://perldoc.jp/docs/perl/5.12.1/perlunicode.pod
【モジュール】
Search the CPAN - metacpan.org: https://metacpan.org/
【Perl環境構築】
plenv
https://github.com/tokuhirom/plenv
cpanm
https://metacpan.org/pod/release/MIYAGAWA/App-cpanminus-1.7001/lib/App/cpanminus.pm
http://perldoc.jp/docs/modules/App-cpanminus-1.7001/lib/App/cpanminus/fatscript.pod
2019/02/01(金) 09:45:51.24ID:1/Kr4Qjk
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1. の行を入れると、DOS 窓への日本語出力は簡便になりますが、
# ソースファイル名に非 ANSI 文字が含まれる場合に die 文の出力が失敗します。
# ※2. OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、
# この例のように cp932 でエンコードする必要があります。
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1. の行を入れると、DOS 窓への日本語出力は簡便になりますが、
# ソースファイル名に非 ANSI 文字が含まれる場合に die 文の出力が失敗します。
# ※2. OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、
# この例のように cp932 でエンコードする必要があります。
2019/02/01(金) 23:49:26.97ID:sNV+JFAU
今更だがCGIとPerlの区別ってなんだよw
7デフォルトの名無しさん
2019/02/02(土) 01:13:45.25ID:ZgweYnRo Common Gateway Interface
https://ja.wikipedia.org/wiki/Common_Gateway_Interface
Common Gateway Interface(コモン・ゲートウェイ・インタフェース、CGI)は、
ウェブサーバ上でユーザプログラムを動作させるための仕組み。
現存する多くのウェブサーバプログラムはCGIの機能を利用することができる。
CGI は環境変数や標準入出力の扱えるプログラミング言語で扱うことができる。
https://ja.wikipedia.org/wiki/Common_Gateway_Interface
Common Gateway Interface(コモン・ゲートウェイ・インタフェース、CGI)は、
ウェブサーバ上でユーザプログラムを動作させるための仕組み。
現存する多くのウェブサーバプログラムはCGIの機能を利用することができる。
CGI は環境変数や標準入出力の扱えるプログラミング言語で扱うことができる。
2019/02/02(土) 10:20:47.06ID:ZgweYnRo
(洋書) Mastering Perl: Creating Professional Programs with Perl 2nd Edition [2014/1/27]
https://www.amazon.co.jp/dp/144939311X/
マスタリングPerlの第2版
(洋書) Programming Perl: Unmatched power for text processing and scripting 4th Edition [2012/3/9]
https://www.amazon.co.jp/dp/0596004923/
プログラミングPerlの第4版
https://www.amazon.co.jp/dp/144939311X/
マスタリングPerlの第2版
(洋書) Programming Perl: Unmatched power for text processing and scripting 4th Edition [2012/3/9]
https://www.amazon.co.jp/dp/0596004923/
プログラミングPerlの第4版
2019/02/03(日) 01:42:34.74ID:72eosYJ+
10デフォルトの名無しさん
2019/02/03(日) 23:38:34.25ID:DVXBklBr 単にCGIで使われるという流行が沈静化しただけだよ。使われている所では使われている。
元からCGI専用言語でもなんでもなくなんでもできるからな。
Python は機械学習で現在流行っているが、それもやがては沈静化するだろう。
かといってなくなることはない。
元からCGI専用言語でもなんでもなくなんでもできるからな。
Python は機械学習で現在流行っているが、それもやがては沈静化するだろう。
かといってなくなることはない。
11デフォルトの名無しさん
2019/02/15(金) 14:42:35.23ID:bVEZ7wIc >>6
どういうレベルの質問?
どういうレベルの質問?
12デフォルトの名無しさん
2019/02/18(月) 00:23:21.60ID:pGUSPpE4 けっこう大きめのEUCで出来たプログラムを全部utf8に直す作業が始まるんだが、面倒くさいんだが
構成ファイルもたくさんあるし、読み書きしてるようなファイルもたくさんあるし、プラグイン方式みたいに作られてて、既存のプラグイン的なのも全部EUCでutf8に直さなきゃならないんだが
めんどくさいと言うか、正常に動くのかどうか不安なんだが
一応表面上は正常に動いたように見えても、俺にはそれはまやかしに感じるんだが
構成ファイルもたくさんあるし、読み書きしてるようなファイルもたくさんあるし、プラグイン方式みたいに作られてて、既存のプラグイン的なのも全部EUCでutf8に直さなきゃならないんだが
めんどくさいと言うか、正常に動くのかどうか不安なんだが
一応表面上は正常に動いたように見えても、俺にはそれはまやかしに感じるんだが
13デフォルトの名無しさん
2019/02/18(月) 00:58:26.57ID:pGUSPpE4 はいやっぱりバグったファイルの読み込みが出来なくなった
14デフォルトの名無しさん
2019/02/18(月) 13:29:31.02ID:trvxFZJG そういやUTF8だとprintfとかで幅を揃えるのができなくなったりして大変だな。
%-10sとかやっても漢字が入るとそこが出力時に3バイトになったりしてずれて役に立たない。
こういう幅とか考慮してフォーマットしてくれるモジュールあるんだろうか?perlだから誰かが作ってそうではあるが。
%-10sとかやっても漢字が入るとそこが出力時に3バイトになったりしてずれて役に立たない。
こういう幅とか考慮してフォーマットしてくれるモジュールあるんだろうか?perlだから誰かが作ってそうではあるが。
2019/02/18(月) 15:02:51.14ID:+OgI4mQP
Unicode::GCStringでカラム数とれるっぽいから空白いくつ詰めるかは計算できそう
16デフォルトの名無しさん
2019/02/18(月) 18:04:58.85ID:pGUSPpE4 かなり頑張ったがUTF8にするのは無理だということになって諦めた
sjisとEUCとutf8が無駄に入り乱れる結果になった
ファイル名はプログラム内部ではEUCで扱ってたり、実際のファイル名はsjisだったり、ファイルの中身はEUCだったり、通信はsjisだったり、
そもそも文字単位じゃなくてバイト単位でデータを管理する記述がめっちゃあったり、
ゴミかよ!
sjisとEUCとutf8が無駄に入り乱れる結果になった
ファイル名はプログラム内部ではEUCで扱ってたり、実際のファイル名はsjisだったり、ファイルの中身はEUCだったり、通信はsjisだったり、
そもそも文字単位じゃなくてバイト単位でデータを管理する記述がめっちゃあったり、
ゴミかよ!
17デフォルトの名無しさん
2019/02/18(月) 20:51:52.45ID:trvxFZJG 一生を掛けて修復するプログラムになったようだな。
18デフォルトの名無しさん
2019/02/18(月) 20:52:30.58ID:trvxFZJG >>15
おお。ありがとう。やはりあったか。
おお。ありがとう。やはりあったか。
2019/02/26(火) 09:36:37.24ID:DhIH/rsp
$str = "abcdefg"; open( $fh,"<",\$str); open( $fh2,"<&",$fh);
はできるけど
open( \*STDIN,"<",\$str)
open( \*STDIN,"<&",$fh)
はできないんだな。知らなかった。"Bad file descriptor" って言われた。
どこかに書いてあったっけ?
はできるけど
open( \*STDIN,"<",\$str)
open( \*STDIN,"<&",$fh)
はできないんだな。知らなかった。"Bad file descriptor" って言われた。
どこかに書いてあったっけ?
20デフォルトの名無しさん
2019/02/26(火) 18:47:18.00ID:vB+znWqX ちょっとマジで聞きたいことがあるんだが、cgiからブラウザに対してCP932でHTMLが出力されている。
もちろんヘッダも正しく指定されている。
んで、そのHTMLの中に、
<IMG SRC="あいうえお.jpg"> などと言う日本語のファイルが指定されているわけだ。
その日本語のファイル名も、CP932だ。
んで、ご丁寧にブラウザが自動でURLエンコードしてくれるようなのだが、
%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A.jpg
となるのだ。これは "あいうえお.jpg" をUTF-8として解釈した時の文字コードだ。
俺としては %82%A0%82%A2%82%A4%82%A6%82%A8,jpg (CP932の文字コード)となってもらわなくては困る。
聞きたいことは2つで、これを解決するにはどうしたら良いか?
もう一つは、ブラウザごとの仕様によりこの挙動は違うのか?
の二点だ
よろしく頼む
もちろんヘッダも正しく指定されている。
んで、そのHTMLの中に、
<IMG SRC="あいうえお.jpg"> などと言う日本語のファイルが指定されているわけだ。
その日本語のファイル名も、CP932だ。
んで、ご丁寧にブラウザが自動でURLエンコードしてくれるようなのだが、
%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A.jpg
となるのだ。これは "あいうえお.jpg" をUTF-8として解釈した時の文字コードだ。
俺としては %82%A0%82%A2%82%A4%82%A6%82%A8,jpg (CP932の文字コード)となってもらわなくては困る。
聞きたいことは2つで、これを解決するにはどうしたら良いか?
もう一つは、ブラウザごとの仕様によりこの挙動は違うのか?
の二点だ
よろしく頼む
21デフォルトの名無しさん
2019/02/26(火) 20:23:51.98ID:c2o2e7e/ >>20
自分でファイル名をそういう風にエンコードすれば?
自分でファイル名をそういう風にエンコードすれば?
22デフォルトの名無しさん
2019/02/26(火) 20:30:51.25ID:vB+znWqX >>21
すまんが読めなくなるから駄目
あと、断定はしてないが、ブラウザやHTTPDのソフトごとに、エンコードやデコードの扱いの違いがある疑いがある
開発環境のwindowsでANHTTPDってやつ使ってるが、こいつはたぶんファイル名をデコードしてないくさい
でも運用環境(有料で借りてる)のApacheさんはパスをURLデコードしてる模様
俺の予想だと、ブラウザも古いのだと絶対自動でUTF-8なんかにはデコードしないと思う。
もしかしたら間違ってるかもしれないけど
困る
統一して欲しい
すまんが読めなくなるから駄目
あと、断定はしてないが、ブラウザやHTTPDのソフトごとに、エンコードやデコードの扱いの違いがある疑いがある
開発環境のwindowsでANHTTPDってやつ使ってるが、こいつはたぶんファイル名をデコードしてないくさい
でも運用環境(有料で借りてる)のApacheさんはパスをURLデコードしてる模様
俺の予想だと、ブラウザも古いのだと絶対自動でUTF-8なんかにはデコードしないと思う。
もしかしたら間違ってるかもしれないけど
困る
統一して欲しい
2019/02/26(火) 20:42:22.45ID:RjPoX3nV
perl関係ある?
24デフォルトの名無しさん
2019/02/26(火) 20:51:34.33ID:vB+znWqX25デフォルトの名無しさん
2019/02/26(火) 21:02:05.63ID:c2o2e7e/ どうしてもすぐになんとかしたいなら全てをUTF8にする。
2019/02/26(火) 21:32:12.63ID:tHWhBgwU
ほんとにcp932なのか?
実はUTF-8で出力されてて、ヘッダはただ無視されてたりしないのか?
まず、クライアントでデータを保存して、バイナリエディタで確認してみたら?
実はUTF-8で出力されてて、ヘッダはただ無視されてたりしないのか?
まず、クライアントでデータを保存して、バイナリエディタで確認してみたら?
2019/02/26(火) 22:01:28.20ID:DhIH/rsp
そのような不正な URL がどのように扱われるかを問うのはあまり有意義とは思えない。
適切に扱ってほしいなら適切にエンコードするしかないと思うのだが。
HTML::Element とか URI を使えば簡単だよ。
適切に扱ってほしいなら適切にエンコードするしかないと思うのだが。
HTML::Element とか URI を使えば簡単だよ。
28デフォルトの名無しさん
2019/02/27(水) 00:05:17.07ID:7T/MRSXz2019/02/27(水) 02:26:58.26ID:Hcodp8Vt
ホントにそうなら、やっぱブラウザのせいなんかね。
データをデコードしたテキストをそのままURLにしたら、たしかにそうなりそうな気はする。
どうしてもあちこちいじらずに簡単に対処するなら、サーバーのほうはどう?
プロキシとかRewriteとか使って、とにかくURLを受けてしまってから、受けたURLを動的に解釈したら?
データをデコードしたテキストをそのままURLにしたら、たしかにそうなりそうな気はする。
どうしてもあちこちいじらずに簡単に対処するなら、サーバーのほうはどう?
プロキシとかRewriteとか使って、とにかくURLを受けてしまってから、受けたURLを動的に解釈したら?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 5:55:55.555
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- 高市さんに土下座してもらったら一発解決なのに何でやらないんだろ??
- 【悲報】男性人気アイドルグループJO1、中国公演中止wwwwwwwwwwwwwwwwwwwwwwwwwww
