Perlについての質問箱 17箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/06/04(土) 16:31:48"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc5.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
http://www.perl.org/get.html
● 2005/03/17現在の最新版: 5.8.7
● 2005/03/17現在の開発版: 5.9.2
0153デフォルトの名無しさん
2005/06/11(土) 10:39:39される。
0154デフォルトの名無しさん
2005/06/11(土) 10:45:17これは?
@nullpo = <GATT>;
0155デフォルトの名無しさん
2005/06/11(土) 11:03:54折れも尻たーい。 バブルが弾けて、会社クビになって、奥さんに捨てられて。。ってとこまで
知ってるけど、彼程度の腕なら再就職先を見つけるのは困難ではないし。。
でも、Perl 6は5年くらい出る出ると言われていた気がするけど、未だ出る気配すらないね。
0156デフォルトの名無しさん
2005/06/11(土) 13:26:41なるほど。これは close し忘れにくくなって良いっすね。
0157デフォルトの名無しさん
2005/06/11(土) 14:15:58XSを使ったモジュール(Cコンパイラを使うやつ)は再インストールしないといけないでしょうか。
0158デフォルトの名無しさん
2005/06/11(土) 16:24:13>>151
>>153
>>156
そこで Ruby ですよ
0159デフォルトの名無しさん
2005/06/11(土) 17:41:13全然関係ないけど。
0160デフォルトの名無しさん
2005/06/11(土) 19:10:030161デフォルトの名無しさん
2005/06/11(土) 20:40:430162デフォルトの名無しさん
2005/06/12(日) 02:19:11しぶしぶperlに戻ってきました。っつても以前はperl4の機能しか使ってなかったんで
もう一度お勉強しなおしたらスゲー面白くて最近ハマってきた。
いい言語かどーかは置いといて、オモレーよperl
0163デフォルトの名無しさん
2005/06/12(日) 02:32:04おもりろりんな言語って言うのは、C++やLispのことを言うのだ。
0164デフォルトの名無しさん
2005/06/12(日) 04:01:440165デフォルトの名無しさん
2005/06/12(日) 04:56:480166デフォルトの名無しさん
2005/06/12(日) 08:00:03,-、 nn
.r-、 _00 /::::'┴'r'
.|::::'´::::r┘ !「`L00、|.l└ク_;厂 /
.|::::「|:::| l| |Ln:::r┘|.l _lニユ、 ./
. ̄└r''"´]_ l| | r゙=゙┐ |└ァ::/ / /.
、ヽ、 ,ゞ´_::::| l| |「二:::7 .|.l └′/ / /
. \\`´ |:::|. l| l 〈::/ 、 ! '/
\ ̄ l
?,@_{'.',qq{\n},"'",q q/q,q q q}=0..4,s,(.),$_{$1},gs,s,(\d)\1,$1+1,eg,tr,0-9,,cd;
s,(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)
,(($1-$2*4+$3*2+$4+$5+$6+$7+$8+$9*7-3)%7+51).'.',exg,print eval;
0167デフォルトの名無しさん
2005/06/12(日) 10:44:330168デフォルトの名無しさん
2005/06/12(日) 10:56:49[\d(\x82[\x4f-\x58])]
というクラス内においてクラスを使おうとするとエラーになります。
何か上手い方法ってありますか?
0169デフォルトの名無しさん
2005/06/12(日) 11:05:420170デフォルトの名無しさん
2005/06/12(日) 11:08:43/((?:\d|\x82[\x4f-\x58])+)/
0171デフォルトの名無しさん
2005/06/12(日) 11:09:248)]{10}
やっぱりこうするしかないのかな。カッコ悪いけど。
0172デフォルトの名無しさん
2005/06/12(日) 11:13:10ありがとうございます。カッコがなぜ二重に必要なのか分りませんが、それ使わせてもらいます。
0173デフォルトの名無しさん
2005/06/12(日) 11:20:09(\d|\x82[\x4f-\x58]){10}
{}←これってクラスにしか使えないのかと勝手に思い込んでました。すみません。
0174デフォルトの名無しさん
2005/06/12(日) 12:12:09いや、matchした連続した数字部分を参照したいかな、と思ったから。
0175デフォルトの名無しさん
2005/06/12(日) 12:27:52どもです、OKです。
/((?:\d|\x82[\x4f-\x58]){10})/
(?:.....)というのはマッチした部分的文字列をを
$1というのに保存しないでしないという意味っすね。
こうすることで全体の10文字が手に入ると。"+"なら一文字以上の
任意の長さの結果が手に入ると。うーん、Perl素晴らしい。
0176デフォルトの名無しさん
2005/06/12(日) 16:13:310177162
2005/06/12(日) 17:49:31Lisp。クロージャ、遅延評価、ストリームなどキーワードはオモロそうだなーと思うが
lisp自体が アホなのでさっぱりわからん。
perl使いに分かるように lispの面白さを広告してみてくれ。
0179デフォルトの名無しさん
2005/06/12(日) 18:22:48> まぁ、自分で書かないとわからんとか言われるんだろうな・・・。
大学でやらされましたよ。人間インタープリタ。
0180デフォルトの名無しさん
2005/06/12(日) 22:56:49それともEUCにするべき?
0181デフォルトの名無しさん
2005/06/13(月) 00:13:590182デフォルトの名無しさん
2005/06/13(月) 00:39:06UTF-8 なのに 2バイト文字とはこれいかに!?
0183デフォルトの名無しさん
2005/06/13(月) 00:41:000185デフォルトの名無しさん
2005/06/13(月) 01:32:14伝統的に「質問箱」となっているだけで、雑談もかまわないとおも
雑談スレは過去何度か経ったが、雑談だけじゃ話が続かないからな
WebProg板に行けばPerl6スレ等もう少し雑談よりのスレも沢山あるがな
0186デフォルトの名無しさん
2005/06/13(月) 02:16:400187デフォルトの名無しさん
2005/06/13(月) 10:13:130188デフォルトの名無しさん
2005/06/13(月) 10:20:050189デフォルトの名無しさん
2005/06/13(月) 10:31:040190デフォルトの名無しさん
2005/06/13(月) 10:38:45って入れただけで動かなくなった。
0191デフォルトの名無しさん
2005/06/13(月) 11:06:26上手く1データ(日付・名前・アドで1行)ずつでんのです。
プログラム初心者でよくわからんのです。
拾い方教えてください。
0192デフォルトの名無しさん
2005/06/13(月) 11:35:42>>4
0193デフォルトの名無しさん
2005/06/13(月) 18:53:50TKモジュールを使って日本語混じりデータの処理をしているのですが、
使えそうな、デバッカーを教えてください。
しばらく前に perl -d:?????? perl.pl でデバッカが使える
とあるWebで目にしました。しかしそのページをブックマーク
し忘れてしまいました。
OSはWindows XP で、Perlは 5.8.6 です
0194デフォルトの名無しさん
2005/06/13(月) 18:59:06デバッカって何?
0195デフォルトの名無しさん
2005/06/13(月) 19:00:03perldoc perldebug
perl -d script.pl # CUIデバッガ 標準添付
perl -d:ptkdb script.pl # GUIデバッガ CPANからインストールする必要あり
0196デフォルトの名無しさん
2005/06/13(月) 19:09:19ありがとうございました。ptkdb ですね。たしかに簡単にInstallできて
さくっと動きました。便利です。たすかりました。
>>194
知らないなら黙って居ろよ ボケェ
0197デフォルトの名無しさん
2005/06/13(月) 19:18:12> デバッカって何?
意地悪い
0198デフォルトの名無しさん
2005/06/13(月) 19:19:25> デバッカーを教えてください。
>>194
> >>193
> デバッカって何?
>>195
> # CUIデバッガ 標準添付
^^
>>196よ、見てるこっちの方が恥ずかしいので勘弁してください。(*ノノ)
0199デフォルトの名無しさん
2005/06/13(月) 19:26:37> デバッカって何?
デバック、デバッカ ――
能力に欠けるプログラマを検出する上で重要なキーワード/概念。
もちろんこれは、デバッグ/デバッガの読み間違いであるが、その読み間違
いを長期間に渡って続けている者は、プログラミングの現場から速やかに
排除されるべきである。
頻繁に「デバッグ」「debug」などの文字列を目にしているはずの現場
において、それでも「デバック」と言い続けているということは、認知
能力に極めて重大な欠陥がある可能性が高いからである。
読んだものをそのまま認識し、タイプすることが何よりも求められるプ
ログラミングという作業に、これほど不適切な人間はいない。
0200デフォルトの名無しさん
2005/06/13(月) 19:28:22いや、「デバッカ」でググって、ろくな情報が無いと
ブーたれてるバカがいるから、これは大事だよ。
0201デフォルトの名無しさん
2005/06/13(月) 19:30:26まあ、「>193 デバックでなくてデバッグな」ぐらいの優しさは標準装備しておこうぜ。
0203デフォルトの名無しさん
2005/06/13(月) 19:38:28あの野郎、iとjの識別ができないわ、Oと0をごたまぜにするわ、
テキスト書かせりゃ 「メーカ―」とか平気で書いて、チェック
させても気づかないわで、川に突き落としてやりたいと本気で思った。
0204デフォルトの名無しさん
2005/06/13(月) 19:52:59De-Bug という言葉の意味も発音も知らないんだ
In-Bug してろよ
0205デフォルトの名無しさん
2005/06/13(月) 19:55:32(*´∀`)
( つ ☆ノハヽヽ
) ,ィ⌒|G|*‘ o‘リ
(_(__人__,つ 、つ
0206デフォルトの名無しさん
2005/06/13(月) 19:59:57ラベルには、英語で Bulldog って書いてあるんだが。
栃木の「ツインリンクもてぎ」もそう。英語では TWIN RING となってる。
まぁ、一種の社会現象ってことか。
0207デフォルトの名無しさん
2005/06/13(月) 21:12:500208デフォルトの名無しさん
2005/06/13(月) 22:20:50悦に入っている痛いやつもときどきいるよな。
まあ、あれは恐るべき罠と評価してもいいかもしんないが。
0209デフォルトの名無しさん
2005/06/13(月) 22:34:25ウォーニング -> ワーニング
ナルポ -> ヌルポ
0210デフォルトの名無しさん
2005/06/13(月) 23:05:350211デフォルトの名無しさん
2005/06/13(月) 23:21:490212デフォルトの名無しさん
2005/06/13(月) 23:23:10$file_is_exist = 'exist' if -e;
は成功するのに
$file_is_exist = -e ? 'exist' : 'not exist';
の -e は括弧がないなんてケシカランと怒られ、検索パターンがどうのと怒られます。
なんでなのでしょうか??
0213デフォルトの名無しさん
2005/06/14(火) 00:13:30りしゃこに変なことするのやめてください
0214デフォルトの名無しさん
2005/06/14(火) 00:16:29開始の?ともとれるわけだが、どちらにもとれる場合は
項になるほう(この場合はパターンマッチの?...?)優先
になる。よくひっかかるのでwarning対象になっていて
カッコで明示しろといわれているわけだ。で、?...?の
最後の?が見つからないので検索パターンがどうこうと
いうエラーもついでに出る。
Warning: Use of "-e" without parentheses is ambiguous at 〜
Search pattern not terminated at 〜
なおエラーについて質問するときは勝手に翻訳しないで
エラーメッセージをありのまま写すのが基本なので以後
注意されたい。
0215212
2005/06/14(火) 00:42:14ん? おお!!
?PATTERN?なんて初めて知ったよ。便利そうですね。ありがとうです。
だけど
$file_is_exist = -e ? 'exist' : 'not exist' ?;
とやっても同じ警告はでてしまうだよ。(-e ?abc? でも -e /abc/でもでる)
?..?の結合度よりも -e ? の結合の方が強いのかな? (-e ? は -e $_ より強い?)
0216デフォルトの名無しさん
2005/06/14(火) 01:28:40どちらの場合もカッコで明示することを推奨しているので
warningは出すということじゃないかと。
/についてもこれは割り算の2項演算子でもあるのでおなじ
あいまいさがあるしね。
同じマッチでも -e m:abc: にすればあいまいさがなくなる
ので出なくなるはずだよ。
0217デフォルトの名無しさん
2005/06/14(火) 01:57:07$file_is_exist = -e $_ ? 'exist' : 'not exist'
0218デフォルトの名無しさん
2005/06/14(火) 02:06:17以下のような文字列なら'abc'を返すような。
$a = 'abc123';
$b = 'abc345';
こんなやり方しか思いつかないです… orz
$i = 1;
$i++ while( substr($a, 0, $i) eq substr($b, 0, $i) );
print substr($a, 0, --$i);
0219デフォルトの名無しさん
2005/06/14(火) 03:47:20$a = 'abc123'; $b = 'abc456';
chop $a until $b =~ /\A\Q$a/;
print $a;
0220デフォルトの名無しさん
2005/06/14(火) 04:05:19おぉ、感激しますた!
先頭一致に捕らわれて、後ろから削る発想がなかったです。
エスケープされてる部分の意味が分からないのでまた調べてみます。
newbieなもんでいろいろな書き方ができるperlに戸惑ったり面白がったりです。
ありがとうございます。
0221デフォルトの名無しさん
2005/06/14(火) 07:25:23$a = 'abc123'; $b = 'abc456';
chop $a until index($b, $a) >= 0;
print $a;
0222デフォルトの名無しさん
2005/06/14(火) 07:26:33$a = 'abc123'; $b = 'abc456';
chop $a until index($b, $a) == 0;
print $a;
0223デフォルトの名無しさん
2005/06/14(火) 08:56:12実行しようとすると、クラッシュするんだけど…(OS=Win98SE)
= = = = =
use encoding 'shiftjis';
print "m9(^Д^)プギャー\n";
= = = = =
↓
日付 06/14/2005 時刻 08:53
PERL のページ違反です。
モジュール : MSVCRT.DLL、アドレス : 0197:7801127c
Registers:
EAX=02dd85a0 CS=0197 EIP=7801127c EFLGS=00010297
EBX=0174c17c SS=019f ESP=0153f708 EBP=0153f710
ECX=00000001 DS=019f ESI=02dd859c FS=3b8f
EDX=00000000 ES=019f EDI=0174c17c GS=0000
Bytes at CS:EIP:
8b 44 8e fc 89 44 8f fc 8d 04 8d 00 00 00 00 03
Stack dump:
0156ef74 00000004 0153f730 2806605a 0174c17c 02dd859c 00000004 0155424c 00000004
02d9d18c 0153f75c 28012870 0155424c 0156ef74 02dd859c 00000004
-d 無しなら、正常に実行される。
なんでだろう? 前のバージョンでもそうだった。
皆さんのところでも、エラーになる?
0224デフォルトの名無しさん
2005/06/14(火) 09:05:19Win98SEか・・・
まずOSのアップグレードからしてみよか。
0225223
2005/06/14(火) 09:24:35ダメです。WinXP でも、全く同じように落ちました。
http://49uper.com:8080/html/img-s/62461.gif
0226223
2005/06/14(火) 09:33:43Shift-JIS / EUC-JP の両方で。
こっちは、全然問題なし。
ActivePerl のバグってことですかね?
0227デフォルトの名無しさん
2005/06/14(火) 09:48:52報告乙。
うちはまだbuild810のまんまだ。
0228227
2005/06/14(火) 09:59:150229223
2005/06/14(火) 10:17:5098SEで、MSVCRT.DLLをインストールCDのバージョンに戻してみたけど、ダメ。
----------
PERL のページ違反です。
モジュール : MSVCRT.DLL、アドレス : 0197:78010848
Registers:
EAX=02dd80d6 CS=0197 EIP=78010848 EFLGS=00010297
EBX=0174cf7c SS=019f ESP=0153f708 EBP=0153f710
ECX=00000001 DS=019f ESI=02dd80d2 FS=461f
EDX=00000000 ES=019f EDI=0174cf7c GS=0000
Bytes at CS:EIP:
8b 44 8e fc 89 44 8f fc 8d 04 8d 00 00 00 00 03
Stack dump:
0156ef74 00000004 0153f730 2806605a 0174cf7c 02dd80d2 00000004 0155424c 00000004
02d9d39c 0153f75c 28012870 0155424c 0156ef74 02dd80d2 00000004
----------
さっきのと落ちたアドレスは違うけど、現象は同じ。
XPでは試してないけど、どうせ同じでしょうな。
0230227
2005/06/14(火) 10:53:090231デフォルトの名無しさん
2005/06/14(火) 11:01:19ttp://bugs.activestate.com/show_bug.cgi?id=39261
0232デフォルトの名無しさん
2005/06/14(火) 12:52:29このパスワードって簡単に破れたり、BBSの中身見れたりするの?
教えて!
0233デフォルトの名無しさん
2005/06/14(火) 13:21:27激しく板違い。
0234デフォルトの名無しさん
2005/06/14(火) 13:24:58WebProg板へGo!
あと具体的にどの BBS かわからないと答えようがない。
0235デフォルトの名無しさん
2005/06/14(火) 15:58:090236デフォルトの名無しさん
2005/06/14(火) 17:55:260237デフォルトの名無しさん
2005/06/14(火) 19:34:29今ごろサンクスコ!!
結局こうしてみました→chop $a while index $b, $a;
嗚呼もうなんだかこの一行に惚れました気持ちえぇですたまらんです。
>>236
いろんなプラットフォームの上で走ってるから難しくないですかね?
インラインAppleScriptとかあるからあってもヘンってことはないのかな。
0238デフォルトの名無しさん
2005/06/14(火) 19:46:070239デフォルトの名無しさん
2005/06/14(火) 19:53:32その気持ちよさ加減がPerlの魔力。
0240デフォルトの名無しさん
2005/06/14(火) 20:05:46無い事も無い
ttp://search.cpan.org/~neilw/Inline-ASM-0.03/ASM.pod
Inline系のモジュールにはCとかTkとかBefungeなんてのまであるから、
調べてみると結構楽しいよ
0241240
2005/06/14(火) 20:08:44Tclの間違い
0242デフォルトの名無しさん
2005/06/14(火) 20:56:450243デフォルトの名無しさん
2005/06/14(火) 21:08:200244デフォルトの名無しさん
2005/06/14(火) 22:19:32激しくありがとう。
0245デフォルトの名無しさん
2005/06/14(火) 22:26:30それに、「shift-jisのテキストファイルに日本語の文字列を追記する」処理をほどこすことになりました。
で、そのまま
open(OUT, ">> $file");
binmode(OUT,"shift-jis");
print OUT "$_\n";
close(OUT);
みたいにshift-jisへのエンコードを追加したりしたんですが、
うまくいきません…。
どなたかアドバイスのほどよろしくおねがいします。
0246デフォルトの名無しさん
2005/06/14(火) 22:57:40binmode(OUT,":encoding(shiftjis)");
0247デフォルトの名無しさん
2005/06/14(火) 23:32:31直りました!ありがとうございます
0248デフォルトの名無しさん
2005/06/15(水) 05:26:09番号順になりますか?例外はありますか?
ちなみにハッシュは規則性はないと聞いております。
0249デフォルトの名無しさん
2005/06/15(水) 08:08:510250デフォルトの名無しさん
2005/06/15(水) 16:28:29行を取り除くにはどうすればいいですか?空行は一行とは限りません 。
0251デフォルトの名無しさん
2005/06/15(水) 16:42:24成功する限り chomp しまくって失敗したら抜けるループ
0252デフォルトの名無しさん
2005/06/15(水) 17:17:05ループを抜けた時、最終行の改行コードが無くなってるので、
書き出す前に復活させる必要があるね。
それなら、$data =~ s/\n+$/\n/; の方が速そうな気がするが…
もちろん $/ = ""; での話。
■ このスレッドは過去ログ倉庫に格納されています