1read 100read
2012年3月プログラム51: Perlについての質問箱 51箱目 (412) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【GUI】wxWidgets(旧wxWindows) その5【サイザー】 (425)
C/C++の宿題片付けます 156代目 (769)
【Google】Androidアプリ作成part13 (294)
【License】ライセンス総合【利用許諾】 (377)
【C++】 DirectX初心者質問スレ Part36 【C】 (862)
Cygwin + MinGW + GCC 相談室 Part 6 (598)

Perlについての質問箱 51箱目


1 :12/03/02
CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。
http://www.perl.org/get.html
Download Latest Stable Source (5.14.2)
▼ 前スレ
Perlについての質問箱 50箱目
http://toro.2ch.net/test/read.cgi/tech/1326823096/
リンク集は >>2-3
Perl 日本語処理の基礎の基礎 >>4

2 :12/03/02
[プログラミング自体の経験が無い奴はまずココを読め]
Perl プログラミング講座: ttp://www.site-cooler.com/kwl/perl/
[本]
リャマ: ttp://www.oreilly.co.jp/books/9784873114279/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.amazon.co.jp/Effective-ASCII-Addison-Wesley-Programming/dp/4756130577
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/
[オンラインマニュアル]
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perldoc.jp: ttp://perldoc.jp/
perldoc.perl.org: ttp://perldoc.perl.org/

3 :12/03/02
[モジュール]
CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perl メモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perl のページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perl の小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl 5.8 Unicodeメモ]
ttp://www.rwds.net/kuroita/program/Perl_unicode.html (修正)
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html

4 :12/03/02
# [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 でエンコードする必要があります。

5 :12/03/02
Encodeモジュール (現在のPerl文字コードの標準)
http://search.cpan.org/dist/Encode/
UNICODEでわからなくなったらここを読め
http://perldoc.jp/docs/perl/5.8.1/utf8.pod
http://perldoc.jp/docs/perl/5.10.0/perlunifaq.pod

6 :12/03/02
前スレで右寄せリスト代入をするための方法を募集したものです。
# やりたいこと
my ($sensen, $sensyu, $konsyu);
($sensen, $sensyu, $konsyu) = @ARGV if (@ARGV == 3);
($sensyu, $konsyu) = @ARGV if (@ARGV == 2);
unshift @ARGV, undef if (@ARGV == 2);
my ($sensen, $sensyu, $konsyu) = @ARGV; # 自分
my ($konsyu, $sensyu, $sensen) = reverse @ARGV; # 984さん
my ($sensen, $sensyu, $konsyu) = @ARGV[-3, -2, -1]; # 985さん
リバースの方法はカッコイイですね!思いつきませんでした。
変数の宣言順とコマンドライン引数の順が変わるのが少し気になりましたが。
添字にマイナスを指定するというのも直接的に右寄せする感じが面白いですね。
皆さんレス有難うございました。

7 :12/03/02
my$i=0,$_=$ARGV[--$i]for reverse my($sensen, $sensyu, $konsyu);

8 :12/03/02
もっと読みにくくしろや

9 :12/03/02
> 変数の宣言順とコマンドライン引数の順が変わるのが少し気になりましたが
そもそもの仕様が、必須項目は左に、省略可能なものは右にっていうコマンドライン引数の大原則を外れてることのほうを気にしろよ

10 :12/03/02
いやまあどっちの原則を重視するのかはちょっと気になってた
Perl寄りなら必須項目を左に寄せる原則重視だけど
右寄せ重視で書きたい場合もあるのかなと
(たいてい左小右大で書かれる数直線的な感じで書きたいとか)

11 :12/03/02
あっと他の誰かと勘違いされかねない書き方してるな俺
この話題で書き込むのは>>10が初めて

12 :12/03/02
コマンドラインって基本英語の命令の文法だから
それを理解してるかどうかよくわかるw

13 :12/03/02
マジかよ、20年以上オプションが前で、ファイルが後ぐらいの感覚しかなかったぜ。

14 :12/03/02
コンパイラ言語で自作するのがいいね

15 :12/03/03
perlでCSVを取り扱う時の一番楽そうなライブラリは何ですか
"でそれぞれの要素が括られていて、中にコンマが入っていてもok、みたいなパターンの
取り扱いに3秒で挫折したので、いい感じにsplitしてくれるだけでいいんだけど

16 :12/03/03
>>15
まず聞く前に検索したら?マジで。

17 :12/03/03
>>15
Text::CSV
Text::CSV_XS
のどっちかだね

18 :12/03/03
まあ、その二つしか見つからなかったんだけど、
splitと置き換えるには結構面倒で
installしないといけない、->newして->parseして->fieldsしないといけない、
unicodeで渡さないといけない、とかいろいろ
きっちりしといた方が後々楽なんだろうけど、
splitと書いた所を、split_csvと書き換えるだけで全部面倒みてくれるような
sub split_csv があったら、そっちの方が好きなんだよな

19 :12/03/03
>>18
さすがにそれは自分で書きなよ
モジュールで提供してくれるのが一番だけど

20 :12/03/03
何ていうのかな
楽をしようと思ってライブラリを頼ったのに、楽できない的な
CSVくらいなら簡単だからいいんだけど、なんか大規模な作品にぶつかったりして
まず勉強から入らないといけない
結果的に出来上がるコードはシンプルなんだけど、
単に大部分のオプションがデフォルトでいいと判ったからシンプルになってるだけで、
背景に膨大な知識が要る、みたいな

21 :12/03/03
> installしないといけない
もうPythonでも使ってろよと

22 :12/03/03
>>20
ツイッターでやれ

23 :12/03/03
>>2
Effective Perlはperl4の時代の本だよね
これのperl5バージョンみたいなの無いの

24 :12/03/03
>>23
Perl5の時代の本です。

25 :12/03/03
あ、ほんとだ
普通に4の本だと思って読んでた

26 :12/03/04
>>20
そんな君には詳説正規表現がおぬぬめ。
楽をしたいなら購入するがいい。

27 :12/03/04
>>20

何このゴミ
何で2chをブログ代わりに使ってるの?

28 :12/03/04
>>27

何このゴミ
何で2chをブログ代わりに使ってるの?

29 :12/03/04
今日は何故か下痢が酷かった
昨日食べたかっぱ寿司か、ワインか、つまみの鶏肉のどれかが怪しい
鶏肉は同じもの昨日も食ったから急に悪くなるとは考えにくいし、
ワインはそんな腐るようなものでもないから、やはり寿司か

30 :12/03/04
>>28

オウム返ししたいだけで
わざわざレス消費するこういうゴミって必ずいるよね

31 :12/03/04
膨大な桁数の計算をする時にはどういう感じでやればいいですか?
3.987......e+47みたいになるので、
それの回避方法です。
いいアルゴリズムないですか?

32 :12/03/04
>>31
http://www.google.co.jp/search?client=ubuntu&channel=fs&q=perl+%E8%A8%88%E7%AE%97+%E6%A1%81&ie=utf-8&oe=utf-8&hl=ja

33 :12/03/04
>>32
アルゴリズムの書いてあるページ貼れやゴミ

34 :12/03/04
>>32
超サンキュウです。

35 :12/03/04
>>33
自分で探せよハゲ
ttp://bossdonreader.naganoblog.jp/e870763.html

36 :12/03/04
>>30

オウム返ししたいだけで
わざわざレス消費するこういうゴミって必ずいるよね

37 :12/03/04
本当にオウム返しきたw
頭悪そうw
まさにゴミwww

38 :12/03/04
馬鹿には無理

39 :12/03/06
クソスレ

40 :12/03/06
馬鹿には馬鹿

41 :12/03/06
うるさいゴミ

42 :12/03/06
バーカ

43 :12/03/06
>>33
しね

44 :12/03/06
生きる!

45 :12/03/06

ゴミ

46 :12/03/06
またどうしようもないカスが貼りついてんのか

47 :12/03/06
>>46=どうしようもないカス

48 :12/03/06
失せろよ池沼

49 :12/03/07
>>46
よう、カス

50 :12/03/07
頭の悪いヴァカが住み着いてるな

51 :12/03/07
ケツ毛の処理方法を教えてください

52 :12/03/07
うるさいゴミ

53 :12/03/07
chompはマルチコアに対応していますか?

54 :12/03/07
モンゴリアンchomp

55 :12/03/07
カトchomp
にしてもラクダ新版が出たというのにこの荒れっぷりは

56 :12/03/07
「P」と「H」の両方を含む言語は大抵ゴミ
例)
PHP
HSP
Python

57 :12/03/07
>>56
Pythonいいんじゃないの?
HSPは、どうかしらんけど。
PHPはキャラかぶってる。

58 :12/03/08
Net::Nslookupでダウンしたサーバーに
nslookupすると固まるのですが
どうやってタイムアウトさせるのでしょうか?
サーバーがダウンしてるか確認したいのですが

59 :12/03/08
systemでping

60 :12/03/08
1人雇った

61 :12/03/08
ソース読むと$TIMEOUTって変数があるから、適当に設定しとけばいいんじゃないの。
Windows以外なら動作するように見える。

62 :12/03/08
何入れても1分も待たされる
ソースに書いてもダメみたい

63 :12/03/08
マジで馬鹿しかいない

64 :12/03/08
>>62
デフォルトで15秒だから、他に何か問題があるんじゃないの?
試してみたらちゃんと動作したし。

65 :12/03/08
つまりWindowsでは、この方法は無理なのか

66 :12/03/08
バッチファイルとリダイレクトさいこう
巣に帰りました

67 :12/03/08
クズだな

68 :12/03/08
Programming Perlの新しいのが出るらしいけどお前たちは買いますか?
http://www.amazon.co.jp/dp/0596004923/

69 :12/03/08
日本版じゃねーじゃん

70 :12/03/08
sub read_file1 { local $/ = ""; <$_[0]>}
sub read_file2 { local $/ = ""; my $fh = $_[0]; <$fh>}
print read_file1("test.txt"); # ->GLOB(0x10063af0)と出力される
print read_file2("test.txt"); # ->ファイル全体が正常に出力される
なぜ1の方法ではうまくいかないのでしょうか?

71 :12/03/08
すみませんコード部下二行、間違えていました。訂正です。
open my $fh, "<", "test.txt";
print read_file1($fh);
print read_file2($fh);

72 :12/03/08
>>71
perlopに書いてある
山括弧の中の文字列がファイルハンドルでもファイルハンドル名、型グロブ、 型グロブリファレンスの
いずれかが入った単純スカラ変数でもなければ、 グロブを行なうファイル名のパターンと解釈され、
コンテキストによって ファイル名のリストか、そのリストの次のファイル名が返されます。 この区別は
単に構文的に行われます。 <$x> は常に間接ハンドルから readline() しますが、 <$hash{key}> は常に
glob() します。 $x は単純スカラー変数ですが、$hash{key} は違う(ハッシュ要素)からです。
<$x > (余分な空白に注意) ですら readline($x) ではなく glob("$x ") として扱われます。

73 :12/03/08
>>72
レスありがとうございます。
あぁ、ラクダ本で何かそういった記述を呼んだ記憶があります。たしかこんな文面の、
行入力演算子<>の中に変数以外のものを置くと突然変異して別の演算子になる。:グロブ演算子
配列の要素も置けなかったとは読み解けませんでした。
$_[0]はグロブすべきファイル名パターンとして解釈されたのですね。
少し紛らわしいと思います。
代替法としては・・
<$foo>をブログとして解釈させるために<${foo}>とすることができるようですが
その逆、<$_[0]>をブログではなく行入力として解釈させることは出来ないようです。
>>71のように一度別の容器に入れるしかないのでしょうか。

74 :12/03/08
ブログ?

75 :12/03/08
>>73
readline使えばいいと思うよ

76 :12/03/08
>>74 ブログでした・・・
>>75
なるほど!ばかですね私ってw
うまく動きました。ありがとうございます。
~/work $ perl test.pl
sub read_file1 { local $/ = ""; readline($_[0])}
sub read_file2 { local $/ = ""; my $fh = $_[0]; <$fh>}
open my $fh, "<", "$0";
print read_file1($fh);
#print read_file2($fh);
__END__

77 :12/03/08
ファイルロックについていろいろ試したけど
ロックをしないで
ファイルを読み込み中に書き込みするとデータが壊れる
書き込み中に読み込みしても壊れるが
読み込み中に読み込みしても壊れないということがわかった
これらを考慮してファイル読み込み中は書き込みのみロック
ファイル書き込み中は読み込みと書き込みの両方ロックするのが一番いいのである。

78 :12/03/08
何十年前の話題だよ

79 :12/03/08
fcntlの範囲ロックは未来の技術

80 :12/03/08
PCDOSの話か

81 :12/03/08
$cond = "t";
$cond ?
$hoge = "aiueo":
nop;
↑これはいけるけど
↓これはいけないんだね
$cond = "";
$cond ?
nop:
$hoge = "aiueo";

82 :12/03/08
flock

83 :12/03/08
>>81
http://perldoc.jp/docs/perl/5.10.0/perlop.pod#Operator32Precedence32and32Associativity
> 右結合 ?:
> 右結合 = += -= *= などの代入演算子
$cond = "";
($cond ? nop : $hoge) = "aiueo";
nopが変数じゃないからエラー。

84 :12/03/08
nopが変数じゃないからエラーじゃないから。

85 :12/03/08
nopが変数じゃないからエラーじゃないからじゃないから。
↓ノーエラー
$aho = 84;
$cond = "";
$cond ?
$aho:
$hoge = "aiueo";

86 :12/03/08
有効な左辺値を返すのか。知らなかった。

87 :12/03/08
undef や lvalue sub のように左辺値として有効な何かであれば変数である必要はない。

88 :12/03/08
>>87
さすがにundefはエラーを吐く。
代入可能(左辺値として妥当)な何かであればいいけど。

89 :12/03/09
undef はダメだけど () や (undef) なら妥当だね。
1 ? undef : $dummy = 'aiueo'; は通らないけど、
(1 ? undef : $dummy) = 'aiueo'; は (undef) = 'aiueo' になるので通る。
my @a = "a".."z";
1 ? $foo : $bar = @a; say $foo; #=> 26
(1 ? $foo : $bar) = @a; say $foo; #=> a

90 :12/03/09
1 ? undef : $dummy = 'aiueo'; は通らないけど、
(1 ? undef : $dummy) = 'aiueo'; は (undef) = 'aiueo' になるので通る。
これで意味が変わるのか? やっぱ、クソだわ。

91 :12/03/09
flockが使えない環境用にmkdirで書き込みのみロックと読み込みのみロックと両方ロックのを作った
作るのにまる3日もかかった

92 :12/03/09
>>89
それは条件部が定数だからコンパイル時に (undef) = 'aiueo': へ最適化されて
リストへの代入になるからたまたま通るだけで、
($ARGV[0] ? undef : $dummy) = 'aiueo'; のように変動する条件なら
$ARGV[0] ? undef : $dummy = 'aiueo'; と解釈され、
$ARGV[0] が真の時に undef = 'aiueo' をやろうとして実行時エラーになる。

93 :12/03/09
じゃあ
(($ARGV[0] ? undef : $dummy)) = 'aiueo';
なら通ったりするのかな?外側のカッコも最適化されてなかったものにされるのかな?
それって処理系依存な動作だったりしないのかな?

94 :12/03/09
>>93
> perl -v
This is perl 5, version 14, subversion 2 (v5.14.2) built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)
...
> perl -MO=Deparse -e "(($ARGV[0] ? undef : $dummy)) = 'aiueo'"
$ARGV[0] ? undef : $dummy = 'aiueo';
-e syntax OK
> perl -MO=Deparse -e "1 ? undef : $dummy = 'aiueo'"
undef = 'aiueo';
-e syntax OK
> perl -MO=Deparse -e "(1 ? undef : $dummy) = 'aiueo'"
(undef) = 'aiueo';
-e syntax OK

95 :12/03/10
>>91
まさか今週の話じゃないよな?

96 :12/03/10
>>68
今日届いた。らくだ本は青くなってからだじゃれが減ってつまんないよ。
版が上がってますますそう感じる。それともおいらのセンスがないのかな。

97 :12/03/10
日本語の第四版持ってるけどどんな所が改訂されたんだろう

98 :12/03/10
>>97
ラクダの右足踏み込みが2ドット深くなってます。

99 :12/03/10
翻訳されたのが出るのは何年後?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
Java系スクリプト言語Groovy (748)
懐かしのMS-DOSプログラミング (333)
Ruby最高や! (185)
リファクタリングをただのコード修正と思ってる人へ (267)
C++11/C++0x 15 (971)
【QBASIC互換!?】FreeBasic【GPL】 (494)
--log9.info------------------
あんたがた馬が可哀想だと思わないのか? (138)
北京五輪日本馬術応援スレ (727)
★全乗振、Yahooの乗馬掲示板ってどうよ!9 (691)
馬からちょっと一言 (701)
MRC乗馬クラブを語る。 (305)
【北海道】北日本学生【東北】 (780)
全日本ジュニア (163)
ポラリス被害者の会Part2 (177)
クレ竜ヶ崎♪ (159)
エルミオーレ (463)
【私の愛馬】尋ね馬スレ【知りませんか?】 (268)
【装蹄】みんなで語ろう【2釘目】 (645)
ウエスタン乗馬について語ろう (469)
馬乗りの美人・可愛い子って?!【3人目】 (926)
目指せ!JRA厩務員 (530)
福島県の乗馬スレッド (236)
--log55.com------------------
ナンバープレートを外して車内のダッシュボードに置く奴は100%車カスだよね。あと位置がキモい奴
真言宗の宿坊が低レビューをする外人をめちゃくちゃ煽る
【これはホラーではない】流産看護婦、亡くなった子をお腹に残したまま夜勤
【ついに切られた】 内田 ようやく懲戒解雇
下痢が凄くてトイレの目の前で出そうになった場合、お尻の穴引き締めて油断しないようにしないと出るな
【速報】2ch荒らしのF9こと鋼兵さん、住所氏名が判明!!本名は川本恒平★136
中国人「日本のガジノ法案は我々をカモにするつもりだろ?」 見抜かれる
【退職金や失業保険もゼロ!】日大が自宅待機中の内田前監督と井上元コーチを懲戒解雇へ