CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: http://kohada.2ch.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.18.2)
▼前スレ
Perlについての質問箱 61箱目
http://toro.2ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
http://toro.2ch.net/test/read.cgi/tech/1385039352/
探検
Perlについての質問箱 63箱目
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2014/02/19(水) 23:36:23.29963デフォルトの名無しさん
2018/01/31(水) 01:11:29.08ID:ajZ2gLGd >>962
<< はビットシフト演算子でもあるので、優先順位的に
$out << "EOC" として解釈されちゃうから…?
print $out (<< "EOC"); や print << "EOC"; で通るならそうだと思う。
<< はビットシフト演算子でもあるので、優先順位的に
$out << "EOC" として解釈されちゃうから…?
print $out (<< "EOC"); や print << "EOC"; で通るならそうだと思う。
964デフォルトの名無しさん
2018/01/31(水) 01:46:30.10ID:PKL4UNme <<の直後が空白文字だと空白文字自体が識別子とみなされる
と、とある本に書いてあった
と、とある本に書いてあった
965デフォルトの名無しさん
2018/01/31(水) 03:10:45.37ID:ajZ2gLGd <<964
http://perldoc.jp/docs/perl/perlop.pod#Regexp32Quote-Like32Operators
> <<EOF
<略>
> 識別子がクォートされていない場合は、<< と識封ハ子の間に 空白を入れてはいけません。
> (もし空白を入れると、空識別子として扱われます; これは有効で、 最初の空行にマッチ
> するようになります。)
昔は
print <<;
document here.
print "foo";
みたいにできたけど、今これやると警告が出る。<<""; なら OK。
#!/usr/bin/perl -w
use strict;
sub E { print "\n6\n" }
open my $out, '>&STDOUT' or die $!;
print $out <<"";
1
print $out (<< 'E', "3\n", <<'');
2
E
4
print $out << 'E'; # Argument "E" isn't numeric in left bitshift (<<)
"5"; # Useless use of a constant ("5") in void context
E
http://perldoc.jp/docs/perl/perlop.pod#Regexp32Quote-Like32Operators
> <<EOF
<略>
> 識別子がクォートされていない場合は、<< と識封ハ子の間に 空白を入れてはいけません。
> (もし空白を入れると、空識別子として扱われます; これは有効で、 最初の空行にマッチ
> するようになります。)
昔は
print <<;
document here.
print "foo";
みたいにできたけど、今これやると警告が出る。<<""; なら OK。
#!/usr/bin/perl -w
use strict;
sub E { print "\n6\n" }
open my $out, '>&STDOUT' or die $!;
print $out <<"";
1
print $out (<< 'E', "3\n", <<'');
2
E
4
print $out << 'E'; # Argument "E" isn't numeric in left bitshift (<<)
"5"; # Useless use of a constant ("5") in void context
E
966デフォルトの名無しさん
2018/01/31(水) 09:25:45.73ID:H6iQ2Lk/967デフォルトの名無しさん
2018/01/31(水) 09:27:00.94ID:H6iQ2Lk/ あ、すまん。リロードせずに書いてしまった。既に回答書かれてたな。
968デフォルトの名無しさん
2018/01/31(水) 19:05:43.73ID:vCtk0IVE スペース空けるの禁止ならそれでいいんだけど、
ファイルハンドラが無いならスペースがあってもokなのが納得行かない
ファイルハンドラが無いならスペースがあってもokなのが納得行かない
969デフォルトの名無しさん
2018/02/01(木) 07:25:10.05ID:Msx4nr7P 気持ちは分からなくもないが、変数の場合はしょうがない。>>963 に書かれてるとおりだ。
970デフォルトの名無しさん
2018/02/01(木) 12:35:16.66ID:Msx4nr7P 誰もつっこまないが、
$out->print( << "EOC");
と書けばいいと思う。
bless されてない場合は昔は
use IO::Handle;
が必要だったが今では
perl -e 'STDOUT->print("abc")'
なんてこともできる。
個人的には、ファイルハンドルの後に , があるというアホな間違いをせずに済むというところで助かっている。
$out->print( << "EOC");
と書けばいいと思う。
bless されてない場合は昔は
use IO::Handle;
が必要だったが今では
perl -e 'STDOUT->print("abc")'
なんてこともできる。
個人的には、ファイルハンドルの後に , があるというアホな間違いをせずに済むというところで助かっている。
971デフォルトの名無しさん
2018/02/02(金) 07:43:01.24 ヒアドキュメントなんてプログラムを読みにくくする諸悪の根源
972愛知人
2018/02/02(金) 12:10:04.50 Wikipediaの12桁トリップの生成スクリプトで12桁以上のトリップキーの変換が5chの結果と合いません。どうすれば合いますか。
973デフォルトの名無しさん
2018/02/03(土) 08:12:51.87ID:hZgGNvq2 Archive::Rar を使って、中身のファイルサイズを取得するにはどうすれば
無理なら、代わりに何を使えばいい?
無理なら、代わりに何を使えばいい?
974デフォルトの名無しさん
2018/02/03(土) 09:38:14.14ID:nCUOym6+ rar コマンドをインストールしてないから CPAN でソースコードを見ただけだが、List を呼べば rar の出力をパースして list に入れてくれるみたいだよ。
試してないから勘違いしてるかもしれないけど、使ってるならソースコードの List, _AddToList 辺りを読めばいいかも。
試してないから勘違いしてるかもしれないけど、使ってるならソースコードの List, _AddToList 辺りを読めばいいかも。
975デフォルトの名無しさん
2018/02/03(土) 10:13:43.25ID:hZgGNvq2 Listはファイル名一覧しか渡してくれないんだよな
976デフォルトの名無しさん
2018/02/03(土) 10:20:52.21ID:hZgGNvq2 -alldata を指定すれば、->{size} で見えるのか
どうせやってるのは、rar.exe の出力を読んでテキスト解析してるだけなので、
似たようなことを自前でやった
どうせやってるのは、rar.exe の出力を読んでテキスト解析してるだけなので、
似たようなことを自前でやった
977デフォルトの名無しさん
2018/02/03(土) 14:48:15.33ID:nCUOym6+ マニュアルには書かれてなかったのか……まあ、信頼性の低い方法だしね。
978デフォルトの名無しさん
2018/02/04(日) 11:13:30.15ID:22FJuDW8 出力される表の形式に似せたファイル名とかにすると、多分騙されるんだろうな
979デフォルトの名無しさん
2018/02/09(金) 18:18:02.60ID:U+AwHosU >>971
KENT WEBの見にくさを見てから言ってくれ
KENT WEBの見にくさを見てから言ってくれ
980デフォルトの名無しさん
2018/02/09(金) 20:07:25.83ID:VqU2EMqO ヒヤー
981デフォルトの名無しさん
2018/02/09(金) 20:21:39.58ID:67QUQBJT 他言語弄るとき、まずヒアドキュメント探すつっても過言じゃ無いんだが…
982デフォルトの名無しさん
2018/02/09(金) 20:58:36.22983デフォルトの名無しさん
2018/02/09(金) 21:23:05.06ID:ukY4fsl4 here => <<~EOM
インデント
出来る
EOM
これ出来るようになって昔書いたソースが結構綺麗になった
インデント
出来る
EOM
これ出来るようになって昔書いたソースが結構綺麗になった
984デフォルトの名無しさん
2018/02/13(火) 11:06:08.61ID:b5aNFBbA ソースにhereドキュメントが多量に含まれてる時点で
キレイじゃねーよw
キレイじゃねーよw
985デフォルトの名無しさん
2018/02/13(火) 21:01:03.94 それな
986デフォルトの名無しさん
2018/02/13(火) 21:31:52.97ID:RM6vxbUw ヒアドキュメントはうまくやると配布するファイルをプログラムのファイル一つにまとめられる。
そういうのは何かのプログラムのインストーラやアップデータには良いかも知れない。
そういうのは何かのプログラムのインストーラやアップデータには良いかも知れない。
987デフォルトの名無しさん
2018/02/14(水) 01:07:32.41ID:eq6pqk6J 全てのスクリプト言語には、ファイルを一つに結合する機能と
コードを圧縮暗号化する機能が必要な気がする
JSにあるアレね
コードを圧縮暗号化する機能が必要な気がする
JSにあるアレね
988デフォルトの名無しさん
2018/02/14(水) 02:24:43.93ID:kFW7p5Uz SQL使うときだなヒアドキュメントは
ORM嫌い
ORM嫌い
989デフォルトの名無しさん
2018/02/14(水) 09:08:25.15ID:1w/9kxzB ああ。そういやSQL文に使ったなあ。
長くなるのが普通だもんなあれって。
長くなるのが普通だもんなあれって。
990デフォルトの名無しさん
2018/02/14(水) 13:42:37.08ID:eEfPvNoj $str = <<'EOF';
エスケープの必要性から解放されたい場合もあるんだよなあ。
これに相当することを C でやるには別ファイルに分けて Makefile で
str_escaped : str_raw
sed 's/\([\"\\]\)/\\\1/g ; s/^/\"/ ; s/$/\"/ ;' < str_raw > str_escaped
みたいにして C の方で
str[] =
#include "str_escaped"
とする必要がある。Perl は本当に便利だ。
EOF
エスケープの必要性から解放されたい場合もあるんだよなあ。
これに相当することを C でやるには別ファイルに分けて Makefile で
str_escaped : str_raw
sed 's/\([\"\\]\)/\\\1/g ; s/^/\"/ ; s/$/\"/ ;' < str_raw > str_escaped
みたいにして C の方で
str[] =
#include "str_escaped"
とする必要がある。Perl は本当に便利だ。
EOF
991デフォルトの名無しさん
2018/02/14(水) 13:50:00.92ID:L6K2VJP2 Pealで正規表現なら、デミリタ変えるだけでいいじゃん
可読性下がるけど
$hoge =~ m!/!;!g;
みたいな
可読性下がるけど
$hoge =~ m!/!;!g;
みたいな
992デフォルトの名無しさん
2018/02/14(水) 19:56:29.61ID:JCOq4GRt 終わりを示す文字列にQEDを使う
993デフォルトの名無しさん
2018/02/14(水) 20:05:36.90ID:eq6pqk6J それが厨二病
994990
2018/02/14(水) 22:39:20.53ID:eEfPvNoj >>991
何を言いたいのかさっぱり解らないが、ひょっとして >>990 に興味持ってくれた?
そうだとしてもやっぱり何を言いたいのかさっぱり解らないのだが。
ちなみに Perl と C を比較してるのであって、sed は関係無いよ。
「これに相当すること」の「これ」とは >>990 全体を Perl コードとして実行した結果のことで、正規表現は何の関係も無い。
大筋としては
・元のテキストはエスケープなどの加工をしないでおきたい。
・エスケープが必要な場合でも目視と手作業なんて論外。自動化したい。
・実行時に別ファイルから読むのではなくプログラムに埋め込みたい。
という前提があって Perl と C でそれぞれどのように実現するかという話だ。
Perl にいくつもあるクォーティングの正確な仕様、Makefile の仕様、C の言語仕様を知ってる人向けだから無理しなくてもいいよ。
>>990 に対してじゃなかったのならごめんね。自意識過剰だったね。
何を言いたいのかさっぱり解らないが、ひょっとして >>990 に興味持ってくれた?
そうだとしてもやっぱり何を言いたいのかさっぱり解らないのだが。
ちなみに Perl と C を比較してるのであって、sed は関係無いよ。
「これに相当すること」の「これ」とは >>990 全体を Perl コードとして実行した結果のことで、正規表現は何の関係も無い。
大筋としては
・元のテキストはエスケープなどの加工をしないでおきたい。
・エスケープが必要な場合でも目視と手作業なんて論外。自動化したい。
・実行時に別ファイルから読むのではなくプログラムに埋め込みたい。
という前提があって Perl と C でそれぞれどのように実現するかという話だ。
Perl にいくつもあるクォーティングの正確な仕様、Makefile の仕様、C の言語仕様を知ってる人向けだから無理しなくてもいいよ。
>>990 に対してじゃなかったのならごめんね。自意識過剰だったね。
995デフォルトの名無しさん
2018/02/15(木) 09:02:00.83ID:8SUVFt/S > 自意識過剰だったね。
そのとおりだろうなw
そのとおりだろうなw
996デフォルトの名無しさん
2018/02/15(木) 23:40:07.21 Perlコードでもレスでも変わらない真実
ぎっしり長文書くやつは無能
ぎっしり長文書くやつは無能
997デフォルトの名無しさん
2018/02/15(木) 23:41:00.25ID:8SUVFt/S 短文なら有能!俺とか!
998デフォルトの名無しさん
2018/02/16(金) 10:21:33.25ID:OW1usLwi 俺も俺も
999デフォルトの名無しさん
2018/02/16(金) 18:54:42.22ID:ZDCA61/e die;
1000デフォルトの名無しさん
2018/02/16(金) 20:51:22.93ID:YSXjevvC ひでぶ
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1457日 21時間 15分 0秒
新しいスレッドを立ててください。
life time: 1457日 21時間 15分 0秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 「そんなに米国が言う通りにやりたいのか」小泉氏、防衛費増額で立民・後藤祐一氏に反論 [少考さん★]
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- 犬って顔くっつけて寝たがるよな
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 実際、朝7~8時の電車通勤は確実にQOL下げてるけど、心に余裕のない社畜にそれ言ったら炎上するよな [315293707]
- テレ朝とTBS、中国側が事前通告したと音声を公開。捏造では?と話題 [776365898]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
