Perlについての質問箱 34箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/01/11(金) 00:07:22"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 ttp://pc11.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
ttp://www.perl.org/get.html
● 2008/01/11現在の最新版: 5.10.0
● 2007/01/11現在の開発版: 5.9.5
前スレ
Perlについての質問箱 33箱目
http://pc11.2ch.net/test/read.cgi/tech/1192463997/
リンク集は>>2-3
過去スレは>>4 あたり
0232デフォルトの名無しさん
2008/01/30(水) 00:44:020233デフォルトの名無しさん
2008/01/30(水) 02:18:43この"configuration"は「設定」というより、「構成」なんだろうよ。
0234デフォルトの名無しさん
2008/01/30(水) 02:56:38ここは自分の思想を押し付けるスレじゃない。
0235デフォルトの名無しさん
2008/01/30(水) 05:11:37聞けばいいんじゃねえの?
0236デフォルトの名無しさん
2008/01/30(水) 05:27:59あぼーんする手間が面倒だよ
0237デフォルトの名無しさん
2008/01/30(水) 05:50:31ドラゴンボールの中でフリーザが一番好きです まで読んだ
0238デフォルトの名無しさん
2008/01/30(水) 08:52:31そうなのですか。参考にします。
>>232>>234
とんだ誤解ですね。私は決めつけられた誤解に対して答えただけですよ。
うらむ相手が間違っています。
それに私は私の哲学をどこで語っているんでしょうか。
Perlに関する質問のやりとりのなかで、致命的な誤解が生じてしまったので、
事情説明をしてコミュニケーションの修復を図っただけですよ。
どこにも私の主観・思想が語られておらず、ただ私に関する事実が述べられているのみです。
(もう一度お読みになってみることをお勧めします。)
それなのにその部分だけとりあげて哲学を語っているからスレ違いだとするのは
あまりに早計ではないでしょうか。
>>235
それだけの英語力があるかはやや不安です。
やはり、日本人だから日本語のほうが話しやすいものです。
0239デフォルトの名無しさん
2008/01/30(水) 09:00:21つうかもっと完結に書く能力はないの?
どうせ「誤解のない詳しく書いてどうのこうの」ってくどくど書くんだろ?
その妙な書き方 前に見たような気がするが…
0240デフォルトの名無しさん
2008/01/30(水) 09:10:20> うらむ相手が間違っています。
>>232 >>234がお前さんを「うらんでいる」という解釈こそ、この場で最も大きい「とんだ誤解」では。
どこから「うらむ」という発想が出てきたのか、まるで見えてこない。
0241デフォルトの名無しさん
2008/01/30(水) 10:03:470242デフォルトの名無しさん
2008/01/30(水) 10:28:450243デフォルトの名無しさん
2008/01/30(水) 10:34:40確かに簡潔に書くことは大切ですが、私が簡潔に書く能力がないとするのは論理の飛躍です。
それに、私の文章が簡潔でないというのも偏見ではないでしょうか。
文字数が特別多いわけでもないでしょう。
あと、簡潔に書けるのになぜ簡潔に書かなかったかというと、その必要を感じたからです。
つまり、あらぬ誤解をかけられて、それがために質問者としての目的の遂行に障害が発生したので、
必要なだけの対策を講じたまでです。
そうした些末なことはまさにスレ本題ではないので、>>241の言うように放置をお勧めします。
それから、2chは私は数年前から定期的に利用しているので、私の文章をあなたが見た可能性は否定
できませんが、私の今回の文章を見ただけで、あなたが過去に見た特定の文章の書き手と同一視して
しまうのは早計ではないでしょうか。
そもそも、仮にあなたが過去に見たような気がするというその文章が私のものだったとしても、
だからどうしたというんですか?
発言の意図が見えてこないし、スレ違いもはなはだしいので自重お願いします。
>>240
うらむという表現は「敵対的な言い方をされる」という表現に置換することも可能です。
要するに、表現方法の問題です。
そもそも、仮に、私が>>238で「とんだ誤解」といったときに最大な過ちが私の表現方法
にあったのだとしても、>>232>>234が誤解をしていることには何ら変わりがありません。
>>241
具体的にどんな点で私が注意されるべきなのでしょうか。
もっとも、>>241が私に向けた発言でないことは明白ですが。
0244デフォルトの名無しさん
2008/01/30(水) 10:39:180245デフォルトの名無しさん
2008/01/30(水) 10:42:170246デフォルトの名無しさん
2008/01/30(水) 10:54:080247デフォルトの名無しさん
2008/01/30(水) 12:47:150248デフォルトの名無しさん
2008/01/30(水) 12:52:09895 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/07(月) 02:32:27
頭が悪いのに口だけは達者な馬鹿の典型だなw
0249デフォルトの名無しさん
2008/01/30(水) 13:13:010250デフォルトの名無しさん
2008/01/30(水) 13:15:37早くインストールしろよw
0251デフォルトの名無しさん
2008/01/30(水) 13:18:17> そうした些末なことはまさにスレ本題ではないので、>>241の言うように放置をお勧めします。
オマエガナ
0252デフォルトの名無しさん
2008/01/30(水) 13:23:420253デフォルトの名無しさん
2008/01/30(水) 13:32:310254デフォルトの名無しさん
2008/01/30(水) 13:39:220255デフォルトの名無しさん
2008/01/30(水) 13:50:440256デフォルトの名無しさん
2008/01/30(水) 16:52:120257デフォルトの名無しさん
2008/01/30(水) 21:53:12…珍しくもないか
0258デフォルトの名無しさん
2008/01/30(水) 22:51:58こんな接続詞が多用されている時点で
簡潔に書けてない事がよく分かるな。
0259デフォルトの名無しさん
2008/01/30(水) 23:22:350260デフォルトの名無しさん
2008/01/31(木) 00:11:09精神病の人が医者に「これこれで私は精神病じゃないです」って言ってるのにそっくりなんだわ
たとえばこれとか
ttp://www.so-net.ne.jp/vivre/kokoro/psyqa1331.html
0261デフォルトの名無しさん
2008/01/31(木) 00:16:370262デフォルトの名無しさん
2008/01/31(木) 00:43:52レ
違い
0263デフォルトの名無しさん
2008/01/31(木) 02:25:460264デフォルトの名無しさん
2008/01/31(木) 11:37:300265デフォルトの名無しさん
2008/01/31(木) 20:03:28一字だけ入力を受け付けたいときはどうすればいいでしょうか?
0266デフォルトの名無しさん
2008/01/31(木) 20:08:05っ[Term::ReadKey]
0267デフォルトの名無しさん
2008/01/31(木) 20:19:170268デフォルトの名無しさん
2008/01/31(木) 22:23:46で数字の桁数を数えられるようですが、どういう仕組みなのか分かりません・・・
くだ質の類だと思いますが、よろしくお願いします。
0269デフォルトの名無しさん
2008/01/31(木) 22:47:500270デフォルトの名無しさん
2008/01/31(木) 22:48:16$xが数字だけなら桁数と一致するわな.
0271デフォルトの名無しさん
2008/01/31(木) 23:32:10でもなんか違う気がする。
0272デフォルトの名無しさん
2008/01/31(木) 23:46:350273デフォルトの名無しさん
2008/02/01(金) 00:59:15それが保証されてるならlengthでもいい気はする。
0274デフォルトの名無しさん
2008/02/01(金) 03:09:51my $num = '-123,456';
print $num =~ tr/0-9//, "\n"; # 6
print length $num; # 8
0275デフォルトの名無しさん
2008/02/01(金) 08:49:130276デフォルトの名無しさん
2008/02/01(金) 10:18:250277デフォルトの名無しさん
2008/02/01(金) 11:53:200278デフォルトの名無しさん
2008/02/01(金) 11:54:25いや数字だけの列と保証されてる場合よ。
0279デフォルトの名無しさん
2008/02/01(金) 12:08:24・・・文字数だけじゃあんまり意味ないか
0280268
2008/02/01(金) 14:12:06処理の順番も勘違いしてました。↓の順番なんですね
$count = ( $x =~ tr/0-9/0-9/ );
ありがとうございました。
0281デフォルトの名無しさん
2008/02/01(金) 14:25:00置換もしくは削除した文字数を返す。
0282デフォルトの名無しさん
2008/02/01(金) 14:32:450284デフォルトの名無しさん
2008/02/01(金) 15:47:47tr/a/a/
ってのは置換したことになるの?
0285デフォルトの名無しさん
2008/02/01(金) 16:05:170286デフォルトの名無しさん
2008/02/01(金) 17:08:30の hoge にマッチした回数でいいんじゃね?
0287デフォルトの名無しさん
2008/02/01(金) 18:12:45文法上は置換する(したことになる)が、実際の置換は行われない。
tr/X// や tr/X/X/ は対象に含まれるXを数える為の記述で、この場合には対象が
左辺値である必要もない。
perl -le "print q/123,456/ =~ tr/0-9a/0-9a/" # エラーにならない
perl -le "print q/124,456/ =~ tr/0-9a/0-9b/" # エラーになる
perl -le "print int(1234.56) =~ tr/0-9a//" # エラーにならない
0288デフォルトの名無しさん
2008/02/01(金) 21:17:49なんで試さないのかなぁ。
もしかして、ナイコン?
0289デフォルトの名無しさん
2008/02/02(土) 13:24:32レスを書くよりキーを叩く回数が少ないのに。
0290デフォルトの名無しさん
2008/02/02(土) 13:55:000291デフォルトの名無しさん
2008/02/02(土) 15:24:02print 'aaaaa' =~ tr/a//;
-e syntax OK
% perl -MO=Deparse -e 'print q/aaaaa/ =~ tr/a/a/'
print 'aaaaa' =~ tr/a//;
-e syntax OK
0292デフォルトの名無しさん
2008/02/02(土) 17:10:44Can't modify constant item in character translation
と怒られてdieした。5.6.1なら置換回数が返された。
0293デフォルトの名無しさん
2008/02/03(日) 23:24:30だいぶ前に書かれたライブラリ(*.pl)が現役で動いているとします。
色々な箇所で使われているため、(動いている限りは)できるだけこれを修正したくありません。
このライブラリの中に、以下のようなサブルーチンがあります。
sub Func
{
local *data = $_[0];
#ハッシュにいろいろ詰め込む
}
このサブルーチンは、以下のように呼び出すようにとサンプルコードが示されています。
local %hash;
&Func(*hash);
これを呼び出し側だけでもlocalを排除しようと、以下のように書き換えました。
実行してみた結果、ちゃんと動いているように見えます。
my %hash;
Func(\%hash);
この場合、
1.呼び出し元だけを書き換えることに意味はあるのか?
2.あるとしたら正しい書き方は?(cron、CGI、mod_perlで動かすことを想定)
よろしくお願いします。
0294デフォルトの名無しさん
2008/02/04(月) 02:17:530295デフォルトの名無しさん
2008/02/04(月) 02:25:32一般論としては、その修正で得られるのが自己満足だけなら、さわらないことをお勧めする。
0296デフォルトの名無しさん
2008/02/04(月) 10:16:16あ、バージョン書き忘れてました。
Perl 5.005
Apache/1.3.28 (Unix)
mod_perl/1.29
※下2つはCGIやmod_perl動作時のもの。
>295
自分がlocalの挙動をきちんと理解していないこともあり、予期せぬバグを生み出す原因になるので
なるべくmyで統一したいと考えています。
それに、そのサブルーチンを呼ぶときだけlocalなのも変かなーと。
0297デフォルトの名無しさん
2008/02/04(月) 10:21:10> 自分がlocalの挙動をきちんと理解していないこともあり、予期せぬバグを生み出す原因になるので
> なるべくmyで統一したいと考えています。
そんな変質的行為に突入する前に、localの挙動をきちんと理解しろ。
0298デフォルトの名無しさん
2008/02/04(月) 10:41:310299デフォルトの名無しさん
2008/02/04(月) 11:08:20ただ、1.2.の問いがあるから「書き換える必要はないんじゃないの?」って言われてるわけで。
0300デフォルトの名無しさん
2008/02/04(月) 11:38:30ライブラリの方を修正したいけど……中途半端に手を出したら悲惨なことになりそう……
0301デフォルトの名無しさん
2008/02/04(月) 11:52:290302デフォルトの名無しさん
2008/02/04(月) 12:18:11古いライブラリがmod_perlで動いてるんです……
0303デフォルトの名無しさん
2008/02/04(月) 12:22:08なんかラッパー関数作ってそっち使うようにしてけば
そのうち古い関数は淘汰されるんでは?
0304デフォルトの名無しさん
2008/02/04(月) 12:51:200305デフォルトの名無しさん
2008/02/04(月) 13:53:56書き換えるよりも書きなおしたほうが早いことさえある
0306デフォルトの名無しさん
2008/02/04(月) 14:38:28以前、「どう見てもPrologです。本当にありがとうございました」な
プログラムをもらったことがある。
0307デフォルトの名無しさん
2008/02/04(月) 18:33:33localが気になるならコメント添えてここはこういう理由って記述しときゃ後で見たときにもわかるし。
せめてそのライブラリの流れ把握できるくらいになってからでないと。
0308デフォルトの名無しさん
2008/02/04(月) 19:53:070309デフォルトの名無しさん
2008/02/05(火) 00:06:020310デフォルトの名無しさん
2008/02/05(火) 05:09:260311デフォルトの名無しさん
2008/02/05(火) 18:09:00上でも言われてるがいじるメリットが自己満足だけなら俺もそのままのがいいとは思う。
0312デフォルトの名無しさん
2008/02/05(火) 20:11:35仕様変更はいつから?
実装変更は、perl 5.9から?
0313デフォルトの名無しさん
2008/02/06(水) 00:30:23できなくて質問CGIが動かないんだけど、以下エラー
Wed Feb 06 00:22:09 2008 Client Abort 2-- detected during CGI/SSI process
Wed Feb 06 00:22:10 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:11 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:12 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:14 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:15 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:16 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:18 2008 Warning: Connection closed and CGI process ID=400 still alive
Wed Feb 06 00:22:19 2008 Warning: Connection closed and CGI process ID=400 ・・・・・・
以下の文法あやしい?
sub sub_lock {
# 1分以上古いロックは削除する
if (-e $lock_path) {
local($mtime) = (stat($lock_path))[9];
if ($mtime < time - 60) { &sub_unlock; }
}
local($retry) = 5;
# mkdir関数式ロック
while (!mkdir($lock_path, 0755)) {
if (--$retry <= 0) { &error('LOCK','LOCK is BUSY'); }
sleep(1);
}
$sys_lockflag=1;
}
ニフティで設置してる人いたからできるとは思うんだけども誰か助けて(;;)。。。
0314デフォルトの名無しさん
2008/02/06(水) 01:18:290315デフォルトの名無しさん
2008/02/06(水) 03:27:35ここはプログラムの板でってCGIの板じゃないよ。はい移動。
http://pc11.2ch.net/test/read.cgi/php/1176143582/
0316デフォルトの名無しさん
2008/02/06(水) 16:20:24おまいらPerlは毎日のように書いてるの?
俺のような記憶力弱いやつはPythonに替えるべき?
0317デフォルトの名無しさん
2008/02/06(水) 16:22:52として小文字を大文字に変換しようとしてますが、
Bareword found where operator expected〜
とか言ってエラーになります。
何度ググってもこれであってるぽいんですが…。わけがわかりません助けて。
0318デフォルトの名無しさん
2008/02/06(水) 16:26:310319デフォルトの名無しさん
2008/02/06(水) 16:29:44gをなくしたら通りました。g使えないの?
ぐぐってでてきた複数の例で使われてるんだけど。
試したVerは5.8.2と5.8.8。
0320デフォルトの名無しさん
2008/02/06(水) 16:31:360321デフォルトの名無しさん
2008/02/06(水) 17:01:290322デフォルトの名無しさん
2008/02/06(水) 17:26:53そんな毎日やるわけないけど
忘れたらリファレンスのページとか参考にすりゃいんじゃないの?
>>319
gはm s // だけのはず。
tr y は>>320
似てるけど一応動作は別もんだからね。
0323デフォルトの名無しさん
2008/02/06(水) 18:47:07Pythonでも、クラスのメソッドとか多くて覚えられないけどね。
ただ、Pythonに乗り換えたらPerlには戻れないと思う。
0324デフォルトの名無しさん
2008/02/06(水) 20:38:28使うときはWebサイトか昔書いたソースを見ながらやってる
0325デフォルトの名無しさん
2008/02/06(水) 22:47:26毎日とは言わないが、けっこう頻繁に使ってるな。
1回しか使わないような使い捨てスクリプトは perl で書いてる。
何度も使うのはCやjavaやVBやVBScriptや・・・・
perl って便利ですよ。
バッチファイルみたいに手軽にかけて、バッチファイルよりも遥に高度な処理ができるからね。
perl が嫌われてる理由を俺なりに考えてみた。
・漢字(ShiftJIS)に対応していない
・サーバアプリに向かない(CGI は負荷が重い)
・ソース丸見えだから業務アプリに向かない(納品できない)
でも使いようによっては超強力だよ。
0326デフォルトの名無しさん
2008/02/06(水) 22:56:53ところでperlで自分で書いたものって一月も前に書いたものは修正したくてならなくなるんだがwww
0327デフォルトの名無しさん
2008/02/06(水) 22:58:19Encode.pmがあるじゃない
> サーバアプリに向かない(CGI は負荷が重い)
Hatena, Mixi, その他探せば色々あると思うんだけど
Perlが糞な理由はOOPやリファレンス回りの小汚い記法と
省略の美学(笑)によって解読不能なコードが書けるからだろう
きちんと書けば(『Perlベストプラクティス』みたいに)大分ましだが
Perlの特長を削いでる感じがするね
0328デフォルトの名無しさん
2008/02/07(木) 00:21:34>ソース丸見えだから業務アプリに向かない
暗号化する仕組みがあるよ。
0329デフォルトの名無しさん
2008/02/07(木) 00:33:040330デフォルトの名無しさん
2008/02/07(木) 00:46:13個人で使うだけなら、迷わずPerl。
まぁ、好き好きだけどね。
0331デフォルトの名無しさん
2008/02/07(木) 00:57:31後発の言語のほうが練られてそうなんですが。
初学者なんでこのままマスターしようか乗り換えようか迷ってるのですわ。
■ このスレッドは過去ログ倉庫に格納されています