Perlについての質問箱 30箱目
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2007/03/14(水) 22:54:12"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html
● 2006/12/21現在の最新版: 5.8.8
● 2006/12/21現在の開発版: 5.9.3
前スレ
Perlについての質問箱 29箱目
http://pc11.2ch.net/test/read.cgi/tech/1166708139/
リンク集は>>2-3
過去スレは>>4
0821デフォルトの名無しさん
2007/05/27(日) 06:28:04ありがとうございます!できました。
0822デフォルトの名無しさん
2007/05/27(日) 18:20:34>Are you ready for manual configuration? [yes]
毎回、noを答えるんですけど、これ抑制できないんですか?
0823デフォルトの名無しさん
2007/05/28(月) 00:37:04> Are you ready for manual configuration?
俺は個人macもsolarisもyes選択してカスタマイズしたから、
最初にnoを選んだ時の挙動は分らんが、抑制もくそもこれって
最初の一回きりだろ?俺の環境だと出てこないんだけど。
何か変な事やってないか?
0824デフォルトの名無しさん
2007/05/31(木) 15:48:16sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ }」
の
flatten(@)は配列以外を引数に取れないということでしょうか?
あと
@deff = grep{ !{map{$_,1}@FileA }->{$_}}@FileB;
のmap{$_,1}@FileAなのですが{$_,1}はどういう式なのでしょうか
0825デフォルトの名無しさん
2007/05/31(木) 16:55:501) プロトタイプの@は残りの引数をすべてリストとして取り込むという意味。
(@) にはあまり意味がないんだけど、perlsubでも読んどき。
2) map の引数のBLOCKはリストコンテキストで評価されるから、
$_, 1 は $_ と 1 からなるリスト。
0826デフォルトの名無しさん
2007/06/01(金) 10:44:52最近の Perl でコマンドラインオプションの処理をする場合の標準を教えてください。
0827デフォルトの名無しさん
2007/06/01(金) 11:02:55Getopt::StdかGetopt::Longを使うのがいいよ。どっちも標準モジュール。
Getopt::LongはGetopt::Stdの機能も含むからGetopt::Longのほうがおすすめ。
0828デフォルトの名無しさん
2007/06/01(金) 11:04:230829デフォルトの名無しさん
2007/06/01(金) 12:00:06自分でちまちまとオプション解析するならそれでいいけどな。
0830829
2007/06/01(金) 12:01:080831デフォルトの名無しさん
2007/06/01(金) 13:21:53早速 Getopt::Long 使ってみました。使いやすそうですね。
御回答ありがとうございます。
>>828
すみません、ちょっと私には意味わからなかったのでスルーさせてくださいー。
0832デフォルトの名無しさん
2007/06/01(金) 16:08:31ありがとうございます
0833デフォルトの名無しさん
2007/06/01(金) 16:39:29$text =~ s/\s*//g;
を1行でする方法ないですか.
1行でなくとも見た目がよければいいです。
あとファイルの最初にmy宣言すると、その後のサブルーチン内でも
使えてしまうのですが、これは何か対策はありますでしょうか
0834デフォルトの名無しさん
2007/06/01(金) 16:51:36とか出来んわけではないが分けて書いたほうが見た目はよいだろ。
> あとファイルの最初にmy宣言すると、その後のサブルーチン内でも
> 使えてしまうのですが、これは何か対策はありますでしょうか
ファイルスコープのmyはグローバル変数だから、そういうもの。
嫌なら中括弧で囲っとけばいい。
0835デフォルトの名無しさん
2007/06/01(金) 16:58:410836デフォルトの名無しさん
2007/06/01(金) 17:06:21このぐらいなら、まあいい?
0837デフォルトの名無しさん
2007/06/01(金) 17:10:060838デフォルトの名無しさん
2007/06/01(金) 17:17:50実質4行w
0839デフォルトの名無しさん
2007/06/01(金) 19:21:130840デフォルトの名無しさん
2007/06/01(金) 19:23:33my $text = join "", map { s/\s*//;$_} <>;
0841デフォルトの名無しさん
2007/06/01(金) 19:43:020842デフォルトの名無しさん
2007/06/01(金) 20:35:25pu
0843デフォルトの名無しさん
2007/06/01(金) 23:04:430844デフォルトの名無しさん
2007/06/01(金) 23:14:33@ARGV を使うだけなのにご苦労様
0845デフォルトの名無しさん
2007/06/01(金) 23:45:56>826 名前:デフォルトの名無しさん:2007/06/01(金) 10:44:52
>はじめまして、 Perl 5.005_03 の世界から来ました。こんにちは。
>
>最近の Perl でコマンドラインオプションの処理をする場合の標準を教えてください。
>コマンドラインオプションの処理をする
>コマンドラインオプションの処理をする
>コマンドラインオプションの処理をする
0846デフォルトの名無しさん
2007/06/02(土) 00:07:520847デフォルトの名無しさん
2007/06/02(土) 01:45:09え!?もっと詳しく!!
0848デフォルトの名無しさん
2007/06/02(土) 02:56:27>>826は -Rrt -l --color=auto とかのコマンドラインオプションをパースしたいってことだろ。
学習目的ならいざ知らずそんなもんいちいち自前で処理する奴はマゾ。
0849デフォルトの名無しさん
2007/06/02(土) 12:28:03use Getopt::Stdするだけでプラス0.4秒
という時代とは違うんだから。
0850デフォルトの名無しさん
2007/06/03(日) 18:25:59$j =~ tr/0-9a-zA-Z/0-9a-zA-Z/;
じゃダメなん?
5.8.4で文字列はutf-8なんだけど。
0851デフォルトの名無しさん
2007/06/03(日) 18:42:50use utf8 した上でなら、それでいいんじゃね? 確かめてないけど。
0853デフォルトの名無しさん
2007/06/03(日) 19:13:390854デフォルトの名無しさん
2007/06/03(日) 19:15:52スクリプトのソースや$jに入っているcharsetが何かがわかんないと答えようがないわな。
0855850
2007/06/03(日) 19:28:12入力と出力をprintして見比べてるけどマズかった?
0856デフォルトの名無しさん
2007/06/03(日) 19:31:18$jの文字コード/UTFフラグの有無で挙動が変わってくる。
0857850
2007/06/03(日) 19:37:59入力、ソースはutf-8(のつもり)。
もしかしたら違うかもしれないから、入力のエンコード方式の調べ方があるなら教えてくれ。
>>856
マズいのか。
0858デフォルトの名無しさん
2007/06/03(日) 19:49:23Dump $j;
0860デフォルトの名無しさん
2007/06/03(日) 20:06:37入力ソースはなんなわけ?
0862デフォルトの名無しさん
2007/06/03(日) 20:18:46Encode::decodeに通して適切にutf-8フラグが立つようにせにゃならん。
0864デフォルトの名無しさん
2007/06/04(月) 13:51:27ねえ。これから態度の悪い質問者には答えない様にしろよ。
付け上がって調子乗ってくるのがオチなんだからさ。
0865デフォルトの名無しさん
2007/06/04(月) 14:05:21∧_∧
( ・ω・)=つ≡つ
(っ ≡つ=つ
/ ) s/.*/ババババ/g
( / ̄∪
0866デフォルトの名無しさん
2007/06/04(月) 14:35:29付け上がっているのはどっちですか?
ここは質問箱でしょ?
質問してください、というスレなんでしょ?
質問者あってのスレなんですよ。
そんな逆切れ見たいなことを言っていないで、
質問してもらったら「質問してくださってありがとう」くらい言ったらどうですか!
0867デフォルトの名無しさん
2007/06/04(月) 15:48:300868デフォルトの名無しさん
2007/06/04(月) 16:27:29とっとと質問せんかボケ
0869デフォルトの名無しさん
2007/06/04(月) 17:02:53質問があったら質問しますよ。
自分の至らなさを指摘されたからって、急に喧嘩腰にならないでください。
頭の悪い人はいちいち無駄な書き込みをしなくていいです。
0870デフォルトの名無しさん
2007/06/04(月) 17:07:09何が質問者あってだよ。回答者があってだろ。
回答者が居ないと何も出来ない癖に。
後 >>1 にも書いてあるけどここは "Perlの奥深さについて皆で語り合い、追求する"スレ。
低レベルな質問と会話はwebprog板でお願いします。
0871デフォルトの名無しさん
2007/06/04(月) 17:14:03無いんなら今すぐ作れや
俺は無職で一日中暇なんじゃアホ
0872デフォルトの名無しさん
2007/06/04(月) 17:15:39あたかも「みんなの意見」であるように強調しておきながら、
結局はラスト1行で単なる頭の悪い煽り屋さんであることをばらしてしまっていますね。
何だかんだいいつつ、自分の「低レベルな会話」は全面的に許してしまっている時点で、
説得力はゼロですね。修行を積んで出直しましょう。
0873デフォルトの名無しさん
2007/06/04(月) 17:19:05暇なら自分で質問を作って自分で回答していればいいじゃないですか。
内容によっては決して無意味ではありませんよ。
高度な質問と高度な回答をセットで提供するぶんには、結構喜ばれると思います。
とはいえ、無職の能無しがそういう問答を自演するのは難しいでしょうが…。
0874デフォルトの名無しさん
2007/06/04(月) 17:21:42皆の意見として言ったつもりは無いな。建前のような物。
ついでに俺は許してないよ? WebProgに案内してるだけ。
お前も個人叩きをするタダの頭の悪い煽り屋にしか
見えないんだが、本文に対する反論は結局ナシなのかな?
0875デフォルトの名無しさん
2007/06/04(月) 17:28:38なるほど、自分で自分を許していないのですね。
ではあなたが黙れば解決です。あなたにできる最大の「低レベルな会話の排除」ですね!
あと、「本文」というのは面白い言い方だと思います。
相手に突っ込まれて、いかに馬鹿なことを言っていたかが自覚できた途端に
そこを蜥蜴の尻尾みたいに切り捨てて、「ノーダメージだよーん」ということにするのですね。
0876デフォルトの名無しさん
2007/06/04(月) 17:34:270877デフォルトの名無しさん
2007/06/04(月) 17:40:23ほっとけ
0878デフォルトの名無しさん
2007/06/04(月) 17:53:57んーそうじゃないな。あくまでwebprog板でやれと希望してるだけだ。
本文って言い方そんなに面白いかな? お前に言われた事は自覚した、
とする。その次の段階の話だ。その次の話が出来なければただの
煽り合いで終わってしまうだろう? 後俺は120%黙る気は無いので宜しく。
0879デフォルトの名無しさん
2007/06/04(月) 17:55:19お前らまとめて詞ね
0880デフォルトの名無しさん
2007/06/04(月) 18:01:04低レベルな質問と会話はwebprog板でお願いします。
0881デフォルトの名無しさん
2007/06/04(月) 18:07:51「ここは "Perlの奥深さについて皆で語り合い、追求する"スレ」であるという理由で
「低レベルな質問と会話はwebprog板でお願い」していた人間も、
つまらないプライドをちょっと傷つけられたら、Perlの奥深さとまるで関係のない低レベルな会話だと自覚しつつも
「120%黙る気は無い」とまで言い切ってしまうのですよ。
俺はやっていいけどお前はダメ、の精神で物事を動かせると思ってるボクちゃんってこんな感じなんです。
0882デフォルトの名無しさん
2007/06/04(月) 18:14:120883デフォルトの名無しさん
2007/06/04(月) 18:14:54なんか、ここぞとばかりに言い負かそうとしてるが、それも違う。
俺は毎回このスレで変な奴が出る度に相手してやってるし、
俺自身もwebprogに行く気なんかハナから無い訳で。本音と建前ってやつだな。
ついでに言うとさっさと僕の"本文"に反論してくれませんか。
0884デフォルトの名無しさん
2007/06/04(月) 18:17:400885デフォルトの名無しさん
2007/06/04(月) 18:18:35相手すんないっとるんじゃボケ。
0886デフォルトの名無しさん
2007/06/04(月) 18:34:14やめてください。
0887デフォルトの名無しさん
2007/06/04(月) 18:43:06> 俺は毎回このスレで変な奴が出る度に相手してやってるし、
かんべんして(><;)
0888デフォルトの名無しさん
2007/06/04(月) 19:08:39ttp://www.so-net.ne.jp/vivre/kokoro/psyqa1087.html
0889デフォルトの名無しさん
2007/06/04(月) 19:33:07こんだけ嫌われまくってもきづかないほうに賭ける
0890デフォルトの名無しさん
2007/06/04(月) 20:04:260891デフォルトの名無しさん
2007/06/04(月) 20:18:16ということにしたいわけですね。
0892デフォルトの名無しさん
2007/06/04(月) 20:22:430893デフォルトの名無しさん
2007/06/04(月) 21:33:090894デフォルトの名無しさん
2007/06/04(月) 21:50:35http://www.gac.jp/article/index.php?stats=question&category=12&id=20208&command=msg
2chなんかに来ずにここで教えてクン続けてればよかったのに
0895デフォルトの名無しさん
2007/06/04(月) 21:59:040896デフォルトの名無しさん
2007/06/04(月) 22:45:50どっちもImage-Magi'c'になっててワラタ
借りてる鯖はlolipopかな?
0897デフォルトの名無しさん
2007/06/04(月) 23:15:20open FH,"/hoge/hoge.txt" #hoge.txtを開く
while (<FH>) { #FHファイルを行単位で読み込んでいく
$Str = $_; #変数Strにデフォルトで入力やパターンマッチになる特殊変数を代入
if( $Str =~ /__\w+__/g ){ #�@???
if( $Str =~ /__KEYWORD__/ ){ #�A???
$Str =~ s/__KEYWORD__/KEY/; #__KEYWORD__をKEYに置換する
}
}
print $str;
}
close FH;
コメントの部分の�@と�Aの説明がうまくできません。
�@は=~の部分がわからず、�Aは/と/で挟まなくて__KEYWORD__だけでも
同じ結果が返ってくるのではないかと思って悩んでいます。
よろしかった教えて頂けないでしょうか?
0898デフォルトの名無しさん
2007/06/04(月) 23:24:58$age = {%hoge};
というコードがあった場合、最後の代入で行われているのは
無名ハッシュコンストラクタの中でハッシュを評価することで、ハッシュのキーと値
からなるリストが生成され、それらを要素とする無名ハッシュが生成されて、そのリファレンスが
$ageに代入される。つまり%hogeのコピーのリファレンスを代入しているという考えでいいんでしょうか?
0899デフォルトの名無しさん
2007/06/04(月) 23:46:46Perl 正規表現でググればウンザリするほど答えが見つかると思います
>>898
そうです
0900デフォルトの名無しさん
2007/06/04(月) 23:47:18ではあなたが黙れば解決です。あなたにできる最大の「低レベルな会話の排除」ですね!
あと、「本文」というのは面白い言い方だと思います。
相手に突っ込まれて、いかに馬鹿なことを言っていたかが自覚できた途端に
そこを蜥蜴の尻尾みたいに切り捨てて、「ノーダメージだよーん」ということにするのですね。
0901デフォルトの名無しさん
2007/06/05(火) 00:05:57なんかすごい無駄だらけなソースだなあ・・・
0902デフォルトの名無しさん
2007/06/05(火) 00:31:500903デフォルトの名無しさん
2007/06/05(火) 00:33:23なんかすごい無駄だらけな文だなあ・・・
0904デフォルトの名無しさん
2007/06/05(火) 00:42:530905デフォルトの名無しさん
2007/06/05(火) 00:48:010906デフォルトの名無しさん
2007/06/05(火) 00:52:000907デフォルトの名無しさん
2007/06/05(火) 01:14:380908デフォルトの名無しさん
2007/06/05(火) 01:34:330909デフォルトの名無しさん
2007/06/05(火) 04:03:09それがこのスレのお約束
0910デフォルトの名無しさん
2007/06/05(火) 09:34:09お前、もう帰っていいぞ。
0911デフォルトの名無しさん
2007/06/05(火) 10:21:081.過去スレを入れるのはやめる。(前スレだけがあればよいと思う)
2.「エラーなどの問題への対処の相談には、問題が再現する完全かつ最短のソースを
作成して下さい。作成する過程で問題が解決する場合も多いです。」
との注意書きを >>1 に入れる。
(質問者が必要な情報を小出しにするのを防ぐため)
3.>>10をテンプレを入れる(但し、内容は、以下のように少し変更する)。
---------------------------------------------------------
# 【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)";
# 次に、あなたが実行したい処理の内容を入れて下さい。
print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n";
sleep(1);
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
0912デフォルトの名無しさん
2007/06/05(火) 11:44:290913デフォルトの名無しさん
2007/06/06(水) 12:20:200914デフォルトの名無しさん
2007/06/06(水) 19:43:33クロスリファレンスで検索してもよくわかりませんでした。
このことに関することが書かれているウェブサイトや文献があったら教えてほしいです。
よろしくお願いします。
0915デフォルトの名無しさん
2007/06/06(水) 20:07:20naoya さんとこの循環参照の解説嫁ば?
ttp://d.hatena.ne.jp/naoya/20051012/1129115986
cross reference って日本語にすれば相互参照で、現実のプログラム中では
ぐるぐる回っちまうから、、、てことで
相互参照、循環参照あたりでググるのもありって事で。
0916デフォルトの名無しさん
2007/06/06(水) 20:24:490917デフォルトの名無しさん
2007/06/06(水) 20:38:180918デフォルトの名無しさん
2007/06/06(水) 21:11:42print my@aaa=(5,5,5,5,5);
print my@bbb=(3,3,3,8,8,8);
↑
これと、
↓
print my@aaa=(5,5,5,5,5);
print @aaa=(3,3,3,8,8,8);
↑
下のほうは使い終わった(もう処理しない予定の)@aaaを再利用しています。
上のやつと下のやつはどっちのほうが処理早いですか?
0919デフォルトの名無しさん
2007/06/06(水) 21:23:16好きに使え
0920デフォルトの名無しさん
2007/06/06(水) 21:26:15use Benchmark;
timethese 1000000, {
test1 => sub {
my@aaa=(5,5,5,5,5);
my@bbb=(3,3,3,8,8,8);
},
test2 => sub {
my@aaa=(5,5,5,5,5);
@aaa=(3,3,3,8,8,8);
}
};
レス数が900を超えています。1000を超えると表示できなくなるよ。