1 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:17:36 ] "The duct tape of the Internet" こと、Perl についての質問箱です。 "There's more than one way to do it" ということで、 Perl の奥深さについて皆で語り合い、追求してまいりましょう。 CGI についての質問は板違いです。WEB プログラミング板でどうぞ。 CGI と Perlの区別がつかない人も WEB プログラミング板に行ってください。 (WEB プログラミング板: pc11.2ch.net/php/ ) CGI の質問は答えが Perl と全然関係ない話に帰着する場合が 多かったりするので WEB プログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 www.perl.org/get.html ● 2009/02/09 現在の最新版: 5.10.0 ▼ 前スレ Perlについての質問箱 38箱目 pc11.2ch.net/test/read.cgi/tech/1221967332/ リンク集は >>2-3 Perl 日本語処理の基礎の基礎 >>4 過去スレは >>5-6 あたり
237 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:47:37 ] >>236 quicksortなんてlibcに任せときゃいいんですよ。気に病むことでもない。
238 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:59:13 ] >>236 quick sortもできないの? ププ
239 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:03:17 ] >>237 だね。 >>238 みたいになんでも自分で作るとたまに間違うことがあるし、 馬鹿馬鹿しいプライドで心がねじ曲がってしまう。
240 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:17:39 ] エンドユーザの立場から一言。 プログラマの方のお考えはごもっともです。 しかし、sortコマンド打つのが簡易で合理的な発想だと思えるのですが。 たかだかちょっとしたソートも自分で書けない人だらけにしてしまったのは 「素人はソートなんてやらなくていい」という発想のせいだと思えるのですが。
241 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:22:21 ] 単純なテキストファイルで単純なソートなら sort(1) でもいいんだろうけど
242 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:24:54 ] FYI ■libcでqsort()を再帰を使って実装してる香具師は怠慢だろ…常識的に考えて d.hatena.ne.jp/n2s/20070421/p1
243 名前: ◆TWARamEjuA mailto:sage [2009/03/08(日) 18:49:15 BE:1742944-BRZ(10000)] そーっとしといてやれよ。
244 名前:デフォルトの名無しさん [2009/03/08(日) 20:19:13 ] >>230 シェル言語ってのは地味に需要がある。 MSがUNIX/Linuxへの対抗心むき出しでWindows PowerShellなんぞ作ってるくらいだから。 UNIX/Linuxを普段使ってる人ってのはシェルを対話的に利用するのに慣れている。 だから、さて何か組もうかって時もシェル言語が第一選択になる。 それでダメな時に別の言語を選ぶ。 UNIXの世界ではシェルでできることはシェルで、というのが昔から暗黙の了解なので いきなりPerlやPythonでやろうとするのは、コンピュータの世界にWindowsから入った人くらいだろう。 それは例えて言うなら、自家用車を持ってるのにリムジンをレンタルしてドライブするようなもんだ。
245 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 22:44:41 ] ワンライナーはsed,awk,sortの方が楽なことが 多いな。例えばいくらオプションでsplitを暗黙 にさせても[]書かされる時点で、$1,$2でいい awkにはかなわない。 もちろんガッツり書くならスクリプト言語。
246 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:17:27 ] >>244 1行目は同意だが、あとはいつの時代の話だよと思うな。 そりゃ配布物配ろうとか思ったらまずshを選択するだろうが、 例えばWebアプリケーション作る時にshを第一選択肢に上げるか? hello world以外は特にsh使う場面って思いつかないんだが。
247 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:48:50 ] >>246 普通にファイル処理やテキスト処理には使うし、 処理を自動化するのにも使うし、 定期的にどっかのサイトにアクセスして、特定の情報だけを記録するとか、 その程度の用途には当たり前に使うと思うが。 本格的なプログラミングか、ワープロとか表計算みたいに出来合いのアプリで済ませるか、 二者択一だったらパソコンライフなんて送れねーよ。 それとも、プログラミングってのはアプリとwebの開発のためだけにあんのか?
248 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:54:32 ] 小規模ならまずシェルで出来ないか考えるよな
249 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:54:45 ] >>247 例外は認めないのかよw 普遍的な事のように書くから変な誤解受けるんだろ。 んで、それらの用途にシェル使わない人もいると思うが何かデメリットでもあるのか? 「UNIXの世界ではふつー」とかじゃ理由にならんだろ。 例えば毎秒起動とかだったらさすがに少々面倒でもshを第一選択とするのが吉だと思うが。
250 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:58:02 ] >>249 >んで、それらの用途にシェル使わない人もいると思うが何かデメリットでもあるのか? 同じことができるならそれでいい。 ただし、より面倒臭くなることはあるだろう。 何も難しくないワンライナーでできることに他の物使うとか、そういうのは単なるアホだろ。
251 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:06:37 ] トリッキーなことしなくても普通にシェルでできるなら、それが一番簡単なんじゃね? コマンド並べれば動くから 難しいナンチャラ理論やらウンタラ指向やらも考えなくて済む プログラマでないエンドユーザや管理者にも使えるのは大きなメリットだと思うな
252 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:07:23 ] >>250 要するに余計面倒な時だけsh使うでもいいわけね。 >>244 はとてもそういう論調には見えないけど。 そういう俺はよくshスクリプト書くがな。
253 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:10:49 ] >>252 w3m -dump www.media-k.co.jp/jiten/wiki.cgi?%A1%E3%B4%E9%CA%B8%BB%FA%A1%A6%A3%C1%A3%C1%A1%E4 | grep '´_'
254 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:11:49 ] >>250 > 何も難しくないワンライナーでできることに他の物使うとか、そういうのは単なるアホだろ。 Perlプログラミングに没頭してる合間とかだったら、AWKの方が少々短くても Perlのワンライナーを選択することはあるな。 短く書けるっつったってせいぜい数バイトだろ>>228 。頭切り替える方が面倒だわ。
255 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:13:28 ] >>254 Perlに没頭してるあなたにとってはPerlでやるほうが簡単なんでしょうね 別にそれはそれでいいのでは? だからといって、それはあなた個人の特殊事情で簡単に感じるだけなのだから、 シェルでやるほうが手間が少ない人にまで強要すべきことではないでしょう
256 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:15:10 ] >>255 いつ強要したんだよww俺はこうだって言っただけじゃん。 逆に>>244 なんかshで出来ることにPerl使う奴は外道みたいな書き方じゃん。
257 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:17:24 ] この人論点が分かってないからトンチンカンな事を言うのかね。 「何事もshが第一選択にするのが普通、じゃなきゃ外道」 みたいな主張がおかしいと言ってるだけなんだが。
258 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:22:07 ] >>257 話がかみ合わない理由って案外簡単なんじゃない? 普通にUNIX系OS使ってる人にとってshって標準的な道具だから、 シェルで作業するってのは鉛筆で文字を書くのと同じくらい簡単で当たり前なんだよ。 だから、どうしても他の物を試す前にshで、っていう発想になるだけでしょ。
259 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:01:03 ] いったい、シェルの話をしているのかシェルスクリプトの話をしているのか はっきりさせてくれ。
260 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:09:12 ] つーかPerlの話しようぜ
261 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:20:03 ] >>259-260 の流れわろた
262 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:41:35 ] この現代に、WEBアプリ以外に何があるの? 世界じゅうどこを見て回っても、WEBアプリしか無いんだから awk も sh もいらん。perl しか選択の道は無いだろ。
263 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:43:50 ] 最近の家庭電化製品はマイコン内臓でずいぶん賢くなった。 しゃべる電子レンジのファームウエアを awk や sh で書けると思ってんの?
264 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:56:31 ] 宗教の勧誘みたいw
265 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:00:33 ] shのほうが慣れてるからsh使うという人が、昔は多かった。 イマドキのPerlerには、Perlのワンライナーのほうが慣れてる人が多いんだろうね。
266 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:06:24 ] >>265 perlの人は ls と打たずに opendir(DIR,'.'); @file = sort readdir(DIR); foreach(@file){ $time = localtime ((stat($_))[9]); print "$time"."\t"."$_\n"; } closedir(DIR); とやるわけですね? 簡単なことをいちいち perl ふがほげ perl うんたらかんたら ってやるのは不自然なんですけど
267 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:10:37 ] lsで済むことならlsじゃねえの普通 Windowsユーザならlsなんぞ打たずにファイラとかエクスプローラだろうしな でも、スクリプトの話じゃなかったのか
268 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:13:40 ] ファイルの行数調べるのも「Perlでどうやろうか」とか考えちゃうのね cat hoge | wc -l とせずに
269 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:14:54 ] そこは wc -l <hoge catとか使わないな
270 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:15:05 ] >>267 シェルとシェルスクリプトに何の違いがあんの? コマンドが単発か複数かの違いだけじゃん?
271 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:15:32 ] ファイルに記述するか その場でうちこんで終わりかの違いじゃね
272 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:17:15 ] シェル言語の有用性認めないなら シェル言語使わなけりゃいいじゃん そこまで言うならPerlだけで暮らせ
273 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:18:57 ] bashのコマンド使わないでperlだけで暮らしたらさぞ便利だろうねw
274 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:23:47 ] Windowsユーザの9割はbashなんて使ってないけどね
275 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:26:16 ] >>274 この話ではWinユーザは無関係と思われ UNIXの操作ではシェルが母国語みたいなもんなのに 簡単な用事でも外国語使いたがる変人だけが対象
276 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:30:51 ] それって、いもしないキャラを作り上げてない?
277 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:40:09 ] awk '/UNIX/ || /Linux/' hoge perl -ne 'print if /UNIX/ || /Linux/' hoge シェルを普通に使いこなしてる人なら最初の方が明らかに簡単だろ? 打鍵数だけじゃなく、構文的にも。 「何でもPerl」ってやりかたが変だってのは、そういうこと。 shは古い、awkやgrepは低機能だと文句言いながら、より難しくやってる人たちを変だと言ってるだけさ。 で、シェルとシェルスクリプトをやたらに区別したがってる奴がいるが、本質は同じだろ。 シェル使って作業して、コマンドを複数使って仕事しようとすると、シェルスクリプトと言われるだけで。
278 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:04:33 ] >>277 その例なら grep '(UNIX|LINUX)' hoge かなあ awkなんて使わないよ
279 名前: ◆TWARamEjuA mailto:sage [2009/03/09(月) 21:09:44 BE:1960463-BRZ(10000)] my @textfiles = grep /txt$/, qx|ls -l|; でもえぇやん。。。
280 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:13:16 ] >>278 環境によって動かないとおもいまつ GNU grep 2.5.3 では少なくとも× grep -e UNIX -e Linux hoge これなら動きます ただし、awk使うのと難しさに大差ありません
281 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:15:29 ] 例を挙げれば挙げるほど Perlより簡単な方法が出てくる件
282 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:21:06 ] >>280 ありゃ egrepならいいのかな?
283 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:21:44 ] >>282 そうでつね
284 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:29:38 ] ここまでの流れを見た率直な感想 Bシェルとかgrepとかawkとかsedなんて前時代の遺物だと思ってたけど・・・ 今でも十分に使えんじゃん
285 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:45:28 ] 結局どうやるのがもっとも効率的かを的確に判断できるように あらゆるスキルを磨いとけってこった。
286 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:15:16 ] 専用のコマンドの方が使い勝手がいいのは当然だよね それでも sed や awk を使うのでは1行で済まない場合は (シェルスクリプト組むような場合は)、Perl の方がシンプルになってくる
287 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:19:03 ] ワンライナーの話をしてるのに なんでshのコマンドラインとワンライナーを比べるんだか・・・。 ネジ緩んでるの?後者は一応スクリプトだぞ。 コマンドはスクリプトで書くのが大変or不可能なことをするために 存在するんだからwcとか例に持ってくるのは愚の骨頂。
288 名前:デフォルトの名無しさん [2009/03/09(月) 23:24:23 ] >>286 簡単なことだけならシェルスクリプトの方がシンプルだと思うが >>287 それって自分の首絞めてないか? コマンド単体で強力ならそれを利用したスクリプトも強力なわけで
289 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:42:01 ] >>287 ワンライナーってコマンドラインの延長じゃねーの? 質的な違いなんてねーよ
290 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:48:37 ] 質問です! Perlとsedとawkとbashはどれがいちばんつおいのですか?
291 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:57:59 ] perlで話題が無いからって、そこまで引っ張ることないだろ(w
292 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:00:57 ] じゃあ無理やり話題作りを。 問:以下のシェルスクリプトをPerlに直しなさい。 #!/bin/sh o=$(echo "$@" | sed 's/ /+/g' | sed 's/ /+/g') w3m "www.google.co.jp/search?hl=ja&q= "$o"&meta=lr%3D&aq=f&oq="
293 名前:292 mailto:sage [2009/03/10(火) 00:08:22 ] ちなみに、 sed 's/ /+/g' | sed 's/ /+/g' の部分は sed 's/[ ]/+g' でも同じですが、 全角スペースと半角スペースを列記すると見た目にわかりにくくなるので、 問題文ではあえて別々に処理しとります。
294 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:15:36 ] sedやw3mがシェルスクリプトの一部だというなら perlも仲間に入れてあげなよ
295 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:18:46 ] perlだけは絶対入れない。絶対ニダ
296 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:21:18 ] sedとかawkでやると楽な事とperlでやるのが楽な事の境界線を 判断するのは難しいよな
297 名前:デフォルトの名無しさん [2009/03/10(火) 01:53:00 ] まーあれだ、シェルがどーこーとかほざいてる奴らが言ってるのはどうせbashだろ。 糞linuxごときの標準シェルなんぞどーでもえーわ
298 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 06:31:06 ] どーでもえーことに熱くなれるっていいネ!!
299 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 11:47:12 ] Linux板のシェルスクリプトスレはここほど釣れなかった からといってここに八つ当たりしなくてもねえ。
300 名前:デフォルトの名無しさん [2009/03/10(火) 22:07:54 ] RSSから指定期間の祝日を取得するスクリプトを書いてる。 ある程度の日付の範囲をもって複数の祝日を取得するときは問題なく動作するんだけど、ある特定の祝日を一つに絞って実行すると上手く動作しない。 printをあちこちかませて調べてるんだけどどうも$keyが上手く取れてない様子。通常はURLが入るんだけどNGの場合はXMLのタグ名がなぜか入ってきてNGになってしまう。 上手く動かすには何が足らないんだろ? use LWP::UserAgent; use XML::Simple; &Holiday ("2009-02-01", "2009-04-01"); # OK &Holiday ("2009-03-20", "2009-03-21"); # NG sub Holiday { my $feed_base = 'www.google.com/calendar/feeds/japanese@holiday.calendar.google.com/public/full '; my $sdate = $_[0]; # この日を含む開始日 my $edate = $_[1]; # この日を含まない終了日 my $query = "start-min=${sdate}&start-max=${edate}"; my $feed_url = $feed_base . '?' . $query; my $ua = LWP::UserAgent->new; my $res = $ua->get( $feed_url ); if( $res->is_success ){ my $xml_parser = XML::Simple->new(); $XML::Simple::PREFERRED_PARSER = 'XML::Parser'; my $holidays_data = $xml_parser->XMLin( $res->content ); foreach my $key ( keys %{ $holidays_data->{ entry } } ){ #print "$key\n"; my $holiday_day = $holidays_data->{ 'entry' }{ "$key" }{ 'gd:when' }{ startTime }; print $holiday_day , "\n"; } }else{ die $res->status_line; } }
301 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:08:10 ] 質問です。 以下のコードを実行するとhoge_fooという出力を期待していたのですがfooとしか表示されません。 おそらく_が何か演算子としての働きをしているんだと思いますが、 一体これはどういう意味を持つ演算子なんでしょうか?教えてください。 Perlのバージョン:This is perl, v5.8.8 built for MSWin32-x86-multi-thread $hoge="hoge"; $foo="foo"; print "$hoge_$foo\n"; # 出力:foo print "$hoge\_$foo\n"; # 出力:hoge_foo
302 名前:301 mailto:sage [2009/03/10(火) 23:10:45 ] $hoge="hoge"; $foo="foo"; $hoge_="まさか・・"; print "$hoge_$foo\n"; print "$hoge\_$foo\n"; どうみても誤解釈です。ほんとうにありがとうございました。
303 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:11:02 ] >>301 3行目で$home_ を展開してる。 サンプルコードの最初に $hoge_ = "HOGE"; て入れてみると、3行目の出力が「HOGEfoo」になる。
304 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:11:34 ] あ、>>302 で解決してますね
305 名前:301 mailto:sage [2009/03/10(火) 23:17:29 ] >>303 ,304 レスどうもありがとうございました。
306 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:31:12 ] くだすれスンマセン ($self->{year},$self->{month},$self->{day}) = ( gmtime time + $time_difference * 3600 )[5,4,3] この [5,4,3]っていうのはどういうことなのですか? こういう書き方の呼称がわからないのでググれなくて
307 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:50:28 ] slice
308 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 13:46:55 ] list
309 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:19:50 ] >>306 ググる前にマニュアルを読めばいいと思うよ。 perldoc.jp/docs/perl/5.10.0/perldata.pod
310 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:31:28 ] >>309 perldata読めばいいってはじめからわかってたら困らんだろ。
311 名前:デフォルトの名無しさん [2009/03/14(土) 10:04:59 ] 少しお聞きしたいのです。 以下のようなソースがありまして、 $| = 1; print "Start\n"; $i = 0; while($a = <>){ print "Loop: $a $i\n"; $i++; } print "End\n"; コマンドラインから perl test.pl などとして起動すると、 Ctrl+Z(ENTER)でEOFを渡して(よくわかってない?)中断して終了できますよね。 しかし、EOF(0x1a)を、 ファイルで渡したり(perl test.pl < test.txt)、Delphi等のプログラムから渡したりすると 上記プログラムでは終了してくれなす。 これを終了してくれるようにするにはどうしたらよいでしょうか?
312 名前:デフォルトの名無しさん [2009/03/14(土) 10:06:38 ] >>311 捕捉 > EOF(0x1a)を、ファイルで渡したり これは、バイナリエディタで 74 65 73 0D 0A 74 65 73 74 0D 0A 1A 0D 0A のように記述しました。
313 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 11:13:25 ] シグナル打ち込め
314 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 11:24:01 ] >>311 1A は関係ないと思う。 1A は有っても無くても終了するはずだよ。 でないと UNIX などは大変なことになる。 1A は Windows だけの習慣。UNIX のテキストファイルには普通 1A は無いからね。 原因は何か他にあるんじゃないの?
315 名前:311 mailto:sage [2009/03/14(土) 12:15:10 ] ごめん、環境かいてなかった。 OS: Windows Vista SP1 32bit perlは体分前に入れたものなので古い This is perl, v5.8.3 built for MSWin32-x86-multi-thread (with 8 registered patches, see perl -V for more detail) >>314 ファイルをつっこむと、1Aで終了せずに、ファイル全部読み込んだら終了します プログラムで(というか以下のライブラリ)で読むと、1A送っても無限ループが続く幹事 maxxdelphisite.free.fr/doscmd.htm 1AってそもそもEOFじゃないんのかな?
316 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 12:27:16 ] >>315 先ず先に<>はSTDINとARGV両方を示す事を理解しろ。 プログラム引数に何か渡されたら、< であろうが、ARGVとして扱われ、 ARGVがあれば、暗黙のうちに<>は<ARGV>として挙動する。 従って ==== while(<>){ print "ARGV: $_" } while( ($_=<>) !~/^$/ ){ print "STDIN: $_"} ==== をhoge.plとして保存して以下の様に実行した場合、 perl hoge.pl < hoge.pl は、ARGVの中身を全てプリントした後にSTDINの処理をする (STDIN処理は、何も入力せずにreturnで終了)。 外部ファイルにシグナルを入れて流し込むのが仮に可能だと しても、それをどのタイミングで使うかは書き手に任される訳だから、 素直に終了フラグを立てるのが普通では無いの?
317 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 13:49:03 ] なんか変なのが沸いた >>プログラム引数に何か渡されたら、< であろうが、ARGVとして扱われ、 へー
318 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 13:55:55 ] ファイルハンドルがって意味じゃねえの? それでも言葉不足だけどw perl hoge.pl < hoge.pl は、 while(<ARGV>){ print ; } でも while(<STDIN>){ print ; } 動くよ。
319 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 13:57:02 ] 最終行「でも動くよ。」
320 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 14:08:58 ] 知ったかぶり者を論うのやめろ。荒れるから。
321 名前:へんなの mailto:sage [2009/03/14(土) 14:09:01 ] あーすまん。 言葉も変だし、5.8までと5.10で挙動が違うわ、>>316 。 >>316 の例とかは全面撤回(5.10では動く)
322 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 14:28:14 ] CPANやperldoc.jpでのPODトランスレータは何を使っていますか? Pod::HTML, Pod::HtmlEasy, Pod::Xhtml, Pod::Tree::HTML, Pod::Simple::HTML, Pod::Simple::XHTML...と、色々試していますが、 L<Foo>やら=item * <Bar::Baz>やらマルチバイト文字やら、 一部に対応しているものがありますが、全部に対応したものはないように 感じました。
323 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:02:33 ] >>315 >ファイルをつっこむと、1Aで終了せずに、ファイル全部読み込んだら終了します >プログラムで(というか以下のライブラリ)で読むと、1A送っても無限ループが続く幹事 結局どうなの?終了するの?無限ループするの?どっちなの? 結局、何がしたいの?どういう動作を期待してるの?
324 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 19:47:30 ] >>311 が使ってるOSでは、0x1a を送っても 0x1a にすぎず EOF にはならない。 どうしてもそれを望むなら OS を CP/M に換えるといい
325 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:48:07 ] I love you
326 名前:デフォルトの名無しさん [2009/03/16(月) 20:40:31 ] 二重のforeach修飾子は使えないのでしょうか? perl -E ' @tmp=([1,2,3],[4,5,6],[7,8,9]); for (@tmp){ for (@{$_}){say} }' 出力 1 2 3 (以下略) という構文をforeach修飾子を使って、以下のように書いたのですが、 perl -E ' @tmp=([1,2,3],[4,5,6],[7,8,9]); say for @{$_} for @tmp;' コンパイルエラーになってしまいます。 このような二重のforeach修飾子は使えないのですか? それともコードが間違っているのでしょうか? perlのバージョンは v5.10.0 built for x86_64-linux-thread-multi です。
327 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:59:27 ] 修飾子はひとつしかつけられません。(perlsyn参照) Any simple statement may optionally be followed by a SINGLE modifier, just before the terminating semicolon (or block ending).
328 名前:デフォルトの名無しさん [2009/03/16(月) 21:15:11 ] rand()で、0が出る確率というのはあるのでしょうか? もしくはrand()で出る一番小さな数字というのがあれば教えて頂けないでしょうか。
329 名前:326 [2009/03/16(月) 21:19:15 ] >>327 ありがとうございます。 参考になりました。
330 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 21:51:39 ] >328 perldoc -f rand
331 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:58:47 ] $data = "19:09:34 hoge 294"; if($data =~ /\d\d:\d\d:\d\d \d*/){ print "マッチ\n"; }else{ print "マッチせず\n"; } 「数字数字:数字数字:数字数字 いくつかの数字」という文にだけヒットさせたいんですが、 何故か余計な文字の入っている上の文でもヒットしてしまいます。 どうしてヒットしてしまうんでしょうか? 環境:This is perl, v5.8.8 built for MSWin32-x86-multi-thread
332 名前:331 mailto:sage [2009/03/17(火) 00:01:27 ] *だと\dが0の場合も含まれるんでした。 *を+にしたらうまくいきました。
333 名前:デフォルトの名無しさん [2009/03/17(火) 00:42:36 ] 関数のreturn値って成功の場合1で、失敗の場合0が普通なのでしょうか? 標準関数はこのパターンが多いような気がします。 シェルスクリプトの場合だとたいてい逆ですよね?
334 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 07:18:18 ] 成功の場合に真を、失敗の場合に偽を返す って考えれば Perlの関数の多くも コマンドの終了コードも同じ
335 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 08:34:52 ] ↑ アフォ?
336 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 16:16:53 ] >>333 そだよ だからsystem関数の使い方には注意 Perl6では、system関数の戻り値もPerlの流儀になる
337 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 20:36:43 ] 引数がAから始まって、後が全部数字かどうかチェックするのって if($ARGV[0] =~ /^A+[0-9]$/) でいいのかな