- 1 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:54:12 ]
- "The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 (WEBプログラミング板 pc8.2ch.net/php/ ) CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 www.perl.org/get.html ● 2006/12/21現在の最新版: 5.8.8 ● 2006/12/21現在の開発版: 5.9.3 前スレ Perlについての質問箱 29箱目 pc11.2ch.net/test/read.cgi/tech/1166708139/ リンク集は>>2-3 過去スレは>>4
- 825 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 16:55:50 ]
- >>824
1) プロトタイプの@は残りの引数をすべてリストとして取り込むという意味。 (@) にはあまり意味がないんだけど、perlsubでも読んどき。 2) map の引数のBLOCKはリストコンテキストで評価されるから、 $_, 1 は $_ と 1 からなるリスト。
- 826 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 10:44:52 ]
- はじめまして、 Perl 5.005_03 の世界から来ました。こんにちは。
最近の Perl でコマンドラインオプションの処理をする場合の標準を教えてください。
- 827 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 11:02:55 ]
- >>826
Getopt::StdかGetopt::Longを使うのがいいよ。どっちも標準モジュール。 Getopt::LongはGetopt::Stdの機能も含むからGetopt::Longのほうがおすすめ。
- 828 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 11:04:23 ]
- @_ で済まなかったっけか
- 829 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 12:00:06 ]
- >>828
自分でちまちまとオプション解析するならそれでいいけどな。
- 830 名前:829 mailto:sage [2007/06/01(金) 12:01:08 ]
- いや、そんなことない。だまされるところだった。
- 831 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 13:21:53 ]
- >>827
早速 Getopt::Long 使ってみました。使いやすそうですね。 御回答ありがとうございます。 >>828 すみません、ちょっと私には意味わからなかったのでスルーさせてくださいー。
- 832 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:08:31 ]
- >>825
ありがとうございます
- 833 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:39:29 ]
- my $text = join '', <>;
$text =~ s/\s*//g; を1行でする方法ないですか. 1行でなくとも見た目がよければいいです。 あとファイルの最初にmy宣言すると、その後のサブルーチン内でも 使えてしまうのですが、これは何か対策はありますでしょうか
- 834 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:51:36 ]
- (my $text = join '', <>) =~ s/\s*//g;
とか出来んわけではないが分けて書いたほうが見た目はよいだろ。 > あとファイルの最初にmy宣言すると、その後のサブルーチン内でも > 使えてしまうのですが、これは何か対策はありますでしょうか ファイルスコープのmyはグローバル変数だから、そういうもの。 嫌なら中括弧で囲っとけばいい。
- 835 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:58:41 ]
- なるほど、ありがとうございました
- 836 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:06:21 ]
- my $text = join '', map {s/\s*//g; $_} (<>);
このぐらいなら、まあいい?
- 837 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:10:06 ]
- $/使った方が速いと思うけど、2文にならざるを得ないな。
- 838 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:17:50 ]
- my $text = do{ local $/ ; $_ = <> ; s/\s*//g ; $_ } ;
実質4行w
- 839 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:21:13 ]
- s/\s*//g, $text.=$_ for <>;
- 840 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:23:33 ]
- ああ、my付けなきゃいけないのか
my $text = join "", map { s/\s*//;$_} <>;
- 841 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:43:02 ]
- (my $text = do {local $/; <>}) =~ s/\s+//g;
- 842 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 20:35:25 ]
- >>837
pu
- 843 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 23:04:43 ]
- ぶっちゃけ遊びとしても「1行で書く」っていうのは意味ないと思うw
- 844 名前:デフォルトの名無しさん [2007/06/01(金) 23:14:33 ]
- >>826-831
@ARGV を使うだけなのにご苦労様
- 845 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 23:45:56 ]
- >>844
>826 名前:デフォルトの名無しさん:2007/06/01(金) 10:44:52 >はじめまして、 Perl 5.005_03 の世界から来ました。こんにちは。 > >最近の Perl でコマンドラインオプションの処理をする場合の標準を教えてください。 >コマンドラインオプションの処理をする >コマンドラインオプションの処理をする >コマンドラインオプションの処理をする
- 846 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 00:07:52 ]
- おまんこライン
- 847 名前:デフォルトの名無しさん [2007/06/02(土) 01:45:09 ]
- >>845
え!?もっと詳しく!!
- 848 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 02:56:27 ]
- 単純にコマンドライン引数を見たいなら@ARGVを順番に見ていけばいいけど、
>>826は -Rrt -l --color=auto とかのコマンドラインオプションをパースしたいってことだろ。 学習目的ならいざ知らずそんなもんいちいち自前で処理する奴はマゾ。
- 849 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 12:28:03 ]
- そうそう、Perl 5.005_03が先端だった頃の、
use Getopt::Stdするだけでプラス0.4秒 という時代とは違うんだから。
- 850 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:25:59 ]
- 文字列の全角英数→半角変換って
$j =~ tr/0-9a-zA-Z/0-9a-zA-Z/; じゃダメなん? 5.8.4で文字列はutf-8なんだけど。
- 851 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:42:50 ]
- >>850
use utf8 した上でなら、それでいいんじゃね? 確かめてないけど。
- 852 名前:850 mailto:sage [2007/06/03(日) 19:02:08 ]
- >>851
英数以外が化けるんだよなぁ…
- 853 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:13:39 ]
- 化けてるってのはどうやって確認してるの?
- 854 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:15:52 ]
- 日本語のマルチバイトはsjis、euc-jp、utf-8(他にもいろいろ)あるわけで、
スクリプトのソースや$jに入っているcharsetが何かがわかんないと答えようがないわな。
- 855 名前:850 mailto:sage [2007/06/03(日) 19:28:12 ]
- 853>>
入力と出力をprintして見比べてるけどマズかった?
- 856 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:31:18 ]
- それは大いにマズい。
$jの文字コード/UTFフラグの有無で挙動が変わってくる。
- 857 名前:850 mailto:sage [2007/06/03(日) 19:37:59 ]
- >>854
入力、ソースはutf-8(のつもり)。 もしかしたら違うかもしれないから、入力のエンコード方式の調べ方があるなら教えてくれ。 >>856 マズいのか。
- 858 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:49:23 ]
- use Devel::Peek;
Dump $j;
- 859 名前:850 mailto:sage [2007/06/03(日) 20:02:10 ]
- >>858
dumpの出力の読み方は? ググってみたけど、どう読んでいいのかサッパリ。
- 860 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 20:06:37 ]
- なんか要領がつかめないんだけど、
入力ソースはなんなわけ?
- 861 名前:850 mailto:sage [2007/06/03(日) 20:13:48 ]
- >>860
適当なサイトから拾ってきたフィード。
- 862 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 20:18:46 ]
- binmodeでストリームに適当なレイヤをかぶせるか、
Encode::decodeに通して適切にutf-8フラグが立つようにせにゃならん。
- 863 名前:850 mailto:sage [2007/06/03(日) 22:06:39 ]
- >>862
$j = decode('utf-8', $j); の1行通したらうまくいった。ありがと。
- 864 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 13:51:27 ]
-
ねえ。これから態度の悪い質問者には答えない様にしろよ。 付け上がって調子乗ってくるのがオチなんだからさ。
- 865 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 14:05:21 ]
- 俺が正規表現でボコボコにしてやんよ
∧_∧ ( ・ω・)=つ≡つ (っ ≡つ=つ / ) s/.*/ババババ/g ( / ̄∪
- 866 名前:デフォルトの名無しさん [2007/06/04(月) 14:35:29 ]
- >>864
付け上がっているのはどっちですか? ここは質問箱でしょ? 質問してください、というスレなんでしょ? 質問者あってのスレなんですよ。 そんな逆切れ見たいなことを言っていないで、 質問してもらったら「質問してくださってありがとう」くらい言ったらどうですか!
- 867 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 15:48:30 ]
- これは酷い釣り糸
- 868 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 16:27:29 ]
- >>866
とっとと質問せんかボケ
- 869 名前:デフォルトの名無しさん [2007/06/04(月) 17:02:53 ]
- >>868
質問があったら質問しますよ。 自分の至らなさを指摘されたからって、急に喧嘩腰にならないでください。 頭の悪い人はいちいち無駄な書き込みをしなくていいです。
- 870 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:07:09 ]
- >>866
何が質問者あってだよ。回答者があってだろ。 回答者が居ないと何も出来ない癖に。 後 >>1 にも書いてあるけどここは "Perlの奥深さについて皆で語り合い、追求する"スレ。 低レベルな質問と会話はwebprog板でお願いします。
- 871 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:14:03 ]
- >>869
無いんなら今すぐ作れや 俺は無職で一日中暇なんじゃアホ
- 872 名前:デフォルトの名無しさん [2007/06/04(月) 17:15:39 ]
- 「>>1 にも書いてあるけど」などという書き出しで
あたかも「みんなの意見」であるように強調しておきながら、 結局はラスト1行で単なる頭の悪い煽り屋さんであることをばらしてしまっていますね。 何だかんだいいつつ、自分の「低レベルな会話」は全面的に許してしまっている時点で、 説得力はゼロですね。修行を積んで出直しましょう。
- 873 名前:デフォルトの名無しさん [2007/06/04(月) 17:19:05 ]
- >>871
暇なら自分で質問を作って自分で回答していればいいじゃないですか。 内容によっては決して無意味ではありませんよ。 高度な質問と高度な回答をセットで提供するぶんには、結構喜ばれると思います。 とはいえ、無職の能無しがそういう問答を自演するのは難しいでしょうが…。
- 874 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:21:42 ]
-
皆の意見として言ったつもりは無いな。建前のような物。 ついでに俺は許してないよ? WebProgに案内してるだけ。 お前も個人叩きをするタダの頭の悪い煽り屋にしか 見えないんだが、本文に対する反論は結局ナシなのかな?
- 875 名前:デフォルトの名無しさん [2007/06/04(月) 17:28:38 ]
- >>874
なるほど、自分で自分を許していないのですね。 ではあなたが黙れば解決です。あなたにできる最大の「低レベルな会話の排除」ですね! あと、「本文」というのは面白い言い方だと思います。 相手に突っ込まれて、いかに馬鹿なことを言っていたかが自覚できた途端に そこを蜥蜴の尻尾みたいに切り捨てて、「ノーダメージだよーん」ということにするのですね。
- 876 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:34:27 ]
- どうでもいい議論はよそでやれよ。
- 877 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:40:23 ]
- 定期的に沸いてる奴だろw
ほっとけ
- 878 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:53:57 ]
- >>875
んーそうじゃないな。あくまでwebprog板でやれと希望してるだけだ。 本文って言い方そんなに面白いかな? お前に言われた事は自覚した、 とする。その次の段階の話だ。その次の話が出来なければただの 煽り合いで終わってしまうだろう? 後俺は120%黙る気は無いので宜しく。
- 879 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:55:19 ]
- >>864-878
お前らまとめて詞ね
- 880 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:01:04 ]
- >>878
低レベルな質問と会話はwebprog板でお願いします。
- 881 名前:デフォルトの名無しさん [2007/06/04(月) 18:07:51 ]
- まぁ、こんなもんでしょう。
「ここは "Perlの奥深さについて皆で語り合い、追求する"スレ」であるという理由で 「低レベルな質問と会話はwebprog板でお願い」していた人間も、 つまらないプライドをちょっと傷つけられたら、Perlの奥深さとまるで関係のない低レベルな会話だと自覚しつつも 「120%黙る気は無い」とまで言い切ってしまうのですよ。 俺はやっていいけどお前はダメ、の精神で物事を動かせると思ってるボクちゃんってこんな感じなんです。
- 882 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:14:12 ]
- スーパーキチガイタイム
- 883 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:14:54 ]
-
なんか、ここぞとばかりに言い負かそうとしてるが、それも違う。 俺は毎回このスレで変な奴が出る度に相手してやってるし、 俺自身もwebprogに行く気なんかハナから無い訳で。本音と建前ってやつだな。 ついでに言うとさっさと僕の"本文"に反論してくれませんか。
- 884 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:17:40 ]
- webprog板じゃなくてもいいから議論なら他スレでやれよ
- 885 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:18:35 ]
- >>883
相手すんないっとるんじゃボケ。
- 886 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:34:14 ]
- > 俺は毎回このスレで変な奴が出る度に相手してやってるし、
やめてください。
- 887 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:43:06 ]
- >>883
> 俺は毎回このスレで変な奴が出る度に相手してやってるし、 かんべんして(><;)
- 888 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 19:08:39 ]
- これだな。
ttp://www.so-net.ne.jp/vivre/kokoro/psyqa1087.html
- 889 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 19:33:07 ]
- 自分が一番変な奴だという自覚が無いんだなw
こんだけ嫌われまくってもきづかないほうに賭ける
- 890 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 20:04:26 ]
- 殆ど一人でやってるように見えるんだけど。
- 891 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 20:18:16 ]
- >>890
ということにしたいわけですね。
- 892 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 20:22:43 ]
- バレたか・・・
- 893 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 21:33:09 ]
- バロスw
- 894 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 21:50:35 ]
- 自演荒らしのImageMagick君ってこれと同一人物っぽいなw
www.gac.jp/article/index.php?stats=question&category=12&id=20208&command=msg 2chなんかに来ずにここで教えてクン続けてればよかったのに
- 895 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 21:59:04 ]
- さすがにそこまでストーキングっぽいことしなくてもいいのに・・・
- 896 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 22:45:50 ]
- >>894
どっちもImage-Magi'c'になっててワラタ 借りてる鯖はlolipopかな?
- 897 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:15:20 ]
- 質問します!
open 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__だけでも 同じ結果が返ってくるのではないかと思って悩んでいます。 よろしかった教えて頂けないでしょうか?
- 898 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:24:58 ]
- %hoge;
$age = {%hoge}; というコードがあった場合、最後の代入で行われているのは 無名ハッシュコンストラクタの中でハッシュを評価することで、ハッシュのキーと値 からなるリストが生成され、それらを要素とする無名ハッシュが生成されて、そのリファレンスが $ageに代入される。つまり%hogeのコピーのリファレンスを代入しているという考えでいいんでしょうか?
- 899 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:46:46 ]
- >>897
Perl 正規表現でググればウンザリするほど答えが見つかると思います >>898 そうです
- 900 名前:デフォルトの名無しさん [2007/06/04(月) 23:47:18 ]
- なるほど、自分で自分を許していないのですね。
ではあなたが黙れば解決です。あなたにできる最大の「低レベルな会話の排除」ですね! あと、「本文」というのは面白い言い方だと思います。 相手に突っ込まれて、いかに馬鹿なことを言っていたかが自覚できた途端に そこを蜥蜴の尻尾みたいに切り捨てて、「ノーダメージだよーん」ということにするのですね。
- 901 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:05:57 ]
- >>897
なんかすごい無駄だらけなソースだなあ・・・
- 902 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:31:50 ]
- ノーダメージだよーん
- 903 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:33:23 ]
- >>900
なんかすごい無駄だらけな文だなあ・・・
- 904 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:42:53 ]
- なんかすごい無駄だらけなスレだなあ・・・
- 905 名前:デフォルトの名無しさん [2007/06/05(火) 00:48:01 ]
- 粘着荒らし酷いな
- 906 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:52:00 ]
- 粘着した方が勝ち!
- 907 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:14:38 ]
- ノーダメージだよーん
- 908 名前:デフォルトの名無しさん [2007/06/05(火) 01:34:33 ]
- 荒らしはやめてー><
- 909 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:03:09 ]
- 変な奴が現れたら一人も漏らさず全部相手するように
それがこのスレのお約束
- 910 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 09:34:09 ]
- >>909
お前、もう帰っていいぞ。
- 911 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:21:08 ]
- 次スレのテンプレのことについて、次の提案があるのだが、どうだろうか?
1.過去スレを入れるのはやめる。(前スレだけがあればよいと思う) 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); # 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう # おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
- 912 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:44:29 ]
- あれ?過去スレ保管所みたいなのなかったっけ?
- 913 名前:デフォルトの名無しさん [2007/06/06(水) 12:20:20 ]
- ttp://namahage.dip.jp/blog/archive/2007/06/06/98399.aspx
|

|