1 名前:nobodyさん mailto:sage [2007/09/16(日) 19:49:43 ID:???] Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 「コマンドの意味がわかんない」とかはマニュアル見ましょう。 回答者さんは何でも屋じゃありません。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 お勧めサイトは >2 以降 前スレ ttp://pc11.2ch.net/test/read.cgi/php/1180492441/ 過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
211 名前:180 mailto:sage [2007/10/02(火) 02:34:16 ID:???] >>205 ん、別に少し間が開いたくらいは気にせんからいいよ。 ただ、サーバー管理者が入れたのがおかしいってのは変だね。 症状からすると、(わざわざ)pure perl のコードを選択したときのバグっぽいけど これって fix されたんじゃなかったっけか? それにPerl本体が 5.8なら Encodeを利用する形でJcodeは入るはずだしなあ。
212 名前:nobodyさん [2007/10/02(火) 06:25:36 ID:SbhRpQr+] レン鯖に特定のモジュールがインスコされてるかどうか テストするのに良い方法はないでしょうか?
213 名前:nobodyさん mailto:sage [2007/10/02(火) 07:23:13 ID:???] @INCを総当たり
214 名前:nobodyさん mailto:sage [2007/10/02(火) 08:34:43 ID:???] >>211 原因を特定できないのなら黙っておけ。
215 名前:nobodyさん mailto:sage [2007/10/02(火) 09:25:29 ID:???] >>212 実際に use して調べるのが一番確実。 #!/usr/bin/perl -w use strict qw(subs vars); my $token = qr/[A-Z_a-z][0-9A-Z_a-z]*/; my $module = ($ARGV[0] || '') =~ /^($token(?:::$token)*)\z/ ? $1 : ''; my $result = $module ? eval "use $module" : 'usage: .../this.cgi?Module::Name '; $result ||= $@ || qq/$module ${"${module}::VERSION"}/; print "Content-Type: text/plain\n\n$result"; __END__
216 名前:nobodyさん mailto:sage [2007/10/02(火) 09:39:01 ID:???] もう少し可読性を高める努力をしろよ。
217 名前:nobodyさん mailto:sage [2007/10/02(火) 10:20:20 ID:???] >>207 インストールしなおしでその構成になるようにしたほうがいいんじゃ・・・
218 名前:nobodyさん mailto:sage [2007/10/02(火) 17:33:08 ID:???] $^Oが取り得る値のリストってどこかにない?
219 名前:nobodyさん mailto:sage [2007/10/02(火) 19:19:35 ID:???] >>218 search.cpan.org/~nwclark/perl-5.8.8/pod/perlport.pod#PLATFORMS
220 名前:nobodyさん mailto:sage [2007/10/02(火) 20:12:26 ID:???] >>215 コードまで書いていただいてありがとうございました。 use <モジュール名> をevalして戻り値を確かめるわけですね。 どうもevalは使うのに躊躇してしまうんですが、こういうときは便利ですね。 >>213 @INCの中を覗くという発想も考えたことがなかったので やってみたいと思います。
221 名前:nobodyさん [2007/10/02(火) 21:03:46 ID:2QBdgnfp] 日本語変換の問題について質問です。 コードをEUCで書いて、出力をShift_JISで行うのが目的です。 今はjcode.pl使っています。 activeperlのwinxp用でローカルチェックをしています。 JCODEというモジュールもあるそうですが、activeperlには初期状態でなかったりしますよね。 確か自分は入れた覚えもあるのですが。 オススメは何ですか? 確か他にも変換用のモジュール?はあったと思いますが。 euc,shift_jis,jisの3つだけでのオススメが知りたいです。
222 名前:nobodyさん mailto:sage [2007/10/02(火) 21:47:16 ID:???] >>221 万能解は無いので、Encode / Jcode / jcode.pl / Unicode::Japanese を 一通り使い込んでから、好みと用途に合ったものをお選びなさいな。
223 名前:nobodyさん mailto:sage [2007/10/02(火) 23:24:50 ID:???] いまさらjcode.pl薦めるなよ。
224 名前:221 [2007/10/02(火) 23:41:50 ID:2QBdgnfp] jcode.plを除いて一番汎用的に使えるのはどれですか? 汎用的って言っても、サーバーやローカル環境で一番広く使えるものです。 一番広まってるモジュールといえばいいのですかね。
225 名前:nobodyさん mailto:ge [2007/10/03(水) 00:23:34 ID:???] リストをリストのままリストの個数を得るにはどうすればいいですか? (1,2,3,4,5) これを配列にいれずにってことです。 grepとかでもリストが作られますよね。 そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。 scalar(@{[grep{$_>0}]}) っていうのも同じくなんかなぁと思います。 普通にないなら関数作ろうと思うのですが。
226 名前:nobodyさん mailto:sage [2007/10/03(水) 00:41:53 ID:???] scalar(@{[1,2,3,4,5]})
227 名前:nobodyさん mailto:sage [2007/10/03(水) 00:41:53 ID:???] はあ
228 名前:nobodyさん mailto:sage [2007/10/03(水) 01:16:44 ID:???] システムに依存する組み込み関数が使用できるかどうか 手っ取り早く調べる方法ってなにかな?
229 名前:nobodyさん mailto:sage [2007/10/03(水) 01:49:55 ID:???] >>224 インスコしてなかったら自分で読み込むようにすればいいよ。 use libつかうなり同階層に置いてuseするなり。
230 名前:nobodyさん mailto:sage [2007/10/03(水) 01:58:30 ID:???] >>224 Perl 5.8.x なら標準モジュールの Encode が一番広まっていると言えば 広まっている。 >>225 リストコンストラクタが幾つの要素を吐くかは、吐かせてみないと 分からない。吐かせた結果を保存しないのなら、目の前を流れていく 個数を数えるしかない。 sub count { scalar @_ } $num = count((1) x rand 10); $num = scalar @{[ (1) x rand 10 ]}; $num = 0; ++$num for (1) x rand 10; >>228 search.cpan.org/~nwclark/perl-5.8.8/pod/perlport.pod#FUNCTION_IMPLEMENTATIONS に目を通した上で eval 内で実際に使用して確認。
231 名前:225 [2007/10/04(木) 00:46:59 ID:kUiVRXqk] >>230 黒魔術みたいなコードはいけないってこのスレで教えてもらいました。 素人ながら納得しました。 ですからあなたもそういうコード書いていてはいけないと思います。 それも教える側でそれを使うと黒魔術が流行ってしまいます。 僕にはあなたのコードが何をしてるのかわかりません。
232 名前:nobodyさん mailto:sage [2007/10/04(木) 00:52:08 ID:???] ++$num for (1) x rand 10; こんな書き方はじめてみたw 7行プログラミングとかに出てきそうだな。 だれか解説というか一般的な形にしてクレクレ
233 名前:nobodyさん mailto:sage [2007/10/04(木) 00:57:28 ID:???] foreach((1) x rand(10)){ ++$num; }
234 名前:nobodyさん mailto:sage [2007/10/04(木) 02:06:39 ID:???] こんなの全然黒魔術じゃないと思うが・・・
235 名前:nobodyさん mailto:sage [2007/10/04(木) 03:26:46 ID:???] 中身が1行のfor(もしくはforeach)なんて普通こう書かんか? ↑もう何年もforeachなんて書かずにforで済ませてるからスペル調べちまったw
236 名前:nobodyさん mailto:sage [2007/10/04(木) 03:33:49 ID:???] それは分かりづらい。括弧でくくった方がいいな。 ++$num for ((1) x rand 10);
237 名前:nobodyさん mailto:sage [2007/10/04(木) 06:44:51 ID:???] これだからPerlのコードは気持ち悪いんだよな
238 名前:225 [2007/10/04(木) 07:08:27 ID:kUiVRXqk] ((1) x rand(10)) これの意味がわかりません。 1*10とどう違うんですか。 それとforに10とか与える意味も。 0..10ならわかるけど。
239 名前:nobodyさん mailto:sage [2007/10/04(木) 08:10:41 ID:???] このスレは精神障害者ばかりですね。
240 名前:nobodyさん mailto:sage [2007/10/04(木) 08:14:34 ID:???] >>231 その程度の実力で関数を自作するってかw
241 名前:nobodyさん mailto:sage [2007/10/04(木) 09:03:58 ID:???] >>238 ひょっとして >吐かせた結果を保存しないのなら、目の前を流れていく >個数を数えるしかない。 の意味がわかってないのか? お前が一定の個数で決め打ちしたいなら最初からそうすればいいだけ。
242 名前:nobodyさん mailto:sage [2007/10/04(木) 09:42:16 ID:???] >> grepとかでもリストが作られますよね。 >> そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。 grepに限って言えばスカラーコンテキストでは条件が真になる要素数を返すわけだが。 % perl -e 'print scalar(grep { $_ > 0 } 0,1,1,0,1)' 3
243 名前:nobodyさん mailto:sage [2007/10/04(木) 09:43:48 ID:???] x 10ならわかるけどなんでrand(10)なん? それがいまいちわからんぽ
244 名前:nobodyさん mailto:sage [2007/10/04(木) 10:10:16 ID:???] いつも10だと面白くないと思って乱数にしただけで特に意味はないだろう。 そんなこと気にしてるとハゲるぞ。
245 名前:nobodyさん mailto:sage [2007/10/04(木) 10:20:27 ID:???] >>238 perldoc.jp/docs/perl/5.8.8/perlop.pod 「Multiplicative Operators operator, multiplicative」の項 rand EXPR は 0 以上 EXPR 未満の値を返すので、整数値が欲しい際は 通常 int() を通す。但し perl が整数値を欲しがっている箇所に小数値が 与えられた場合は、自動で整数値に丸められる。 $str = substr('abcd', 0, rand 5); # '', 'a', 'ab', 'abc', 'abcd' $var = $array[ rand @array ]; # @array 中の要素からランダム選出 x 演算子の右辺は「個数」という整数値を要求しているので、(1) x rand 5 という式は (), (1), (1,1), (1,1,1), (1,1,1,1) のいずれかになる。 >>243 >>241 が指摘してくれているように、最初から個数が分かっているなら 「リストをリストのままリストの個数を得る」必要はなく、$num = 10; 等と書いておけば済む。(1) x rand 10 という式には「要素数が不定で」 「コピペですぐ動作確認できる」リストのサンプルという以上の意味は無い。
246 名前:nobodyさん mailto:sage [2007/10/04(木) 17:45:56 ID:???] これ何? $|++;
247 名前:nobodyさん mailto:sage [2007/10/04(木) 18:42:58 ID:???] 出力バッファの自動フラッシュを抑制
248 名前:nobodyさん mailto:sage [2007/10/04(木) 18:43:28 ID:???] ハニーフラッシュ!
249 名前:nobodyさん mailto:sage [2007/10/04(木) 18:44:27 ID:???] 抑制じゃねえ間違えた まあいいや
250 名前:nobodyさん mailto:sage [2007/10/04(木) 19:48:49 ID:???] プログラミングPerlのパッケージ、オブジェクトの章を読んでも意味が さっぱりわからなかったのですがどうすればいいですか? みなさんはあそこに書いてあること、あっさりわかりました?
251 名前:nobodyさん mailto:sage [2007/10/04(木) 20:48:51 ID:???] >>250 ラクダ本だけでは実感が掴みにくいような。 www.rfs.jp/sb/perl/ でも解説されてる。 同じ説明でもいろんな説明を見ると分かってくるような。
252 名前:nobodyさん mailto:sage [2007/10/04(木) 21:37:38 ID:???] >>250 fleur.hio.jp/perldoc/mix/pod/perlboot.html
253 名前:nobodyさん mailto:sage [2007/10/05(金) 09:42:06 ID:???] OOP 勉強したいなら Plagger に入門すればいいよ!
254 名前:nobodyさん mailto:sage [2007/10/05(金) 12:41:48 ID:???] >>251 これは本当に超初心者向けといった感じですね。 >>252 これはわかりやすい! >>253 こんな面白いものがあったんだ
255 名前:nobodyさん [2007/10/06(土) 12:48:34 ID:PfM+S4yJ] foreach(){} ↑フォーイーチみたいな発音でいいですよね・・・?
256 名前:255 [2007/10/06(土) 13:03:13 ID:PfM+S4yJ] 追加お願いします。 use strict; my %hash = qw/2 5 s 2 d 3/; print map{"$_ " , 1}keys %hash; >Execution of C:\test.pl aborted due to compilation errors. これ何がいけないんですか? print map{$_ ," ", 1}keys %hash; こう書き換えるとエラーになりません。 activeperl5.8.1のwinxp稼動です。
257 名前:255 [2007/10/06(土) 13:23:18 ID:PfM+S4yJ] ぐるせいや。ぐるせいや。
258 名前:nobodyさん mailto:sage [2007/10/06(土) 13:30:22 ID:???] >>256 perldoc map見れば分かる
259 名前:255 [2007/10/06(土) 15:01:35 ID:PfM+S4yJ] >>258 すいません。わからないです。 教えてください。
260 名前:nobodyさん mailto:sage [2007/10/06(土) 15:40:28 ID:???] > perldoc map見れば分かる > map - An utility to map texts from and to unicode ねーよwww
261 名前:255 [2007/10/06(土) 17:19:29 ID:PfM+S4yJ] どなたか>>255-256 の回答お願いできませんでしょうかm(__)m
262 名前:nobodyさん mailto:sage [2007/10/06(土) 17:33:12 ID:???] print map{("$_ ", 1)} keys %hash;
263 名前:nobodyさん mailto:sage [2007/10/06(土) 17:33:28 ID:???] 読み方なんてどーでもいいじゃん スクールでも始める気か?
264 名前:nobodyさん mailto:sage [2007/10/06(土) 17:44:55 ID:???] >>255 dictionary.goo.ne.jp/search.php?MT=for&kind=ej&mode=0&base=1&row=1 dictionary.goo.ne.jp/search.php?MT=each&kind=ej&mode=0&kwassist=0 これぐらいは辞書引いたらどうよ。 >>256 perldoc.jp/docs/perl/5.6.1/perlfunc.pod > { はハッシュリファレンスとブロックの両方の開始文字なので、 > map { ... は map BLOCK LIST の場合と map EXPR, LIST の場合があります。 > perl は終了文字の } を先読みしないので、{ の直後の文字を見て > どちらとして扱うかを推測します。通常この推測は正しいですが、 > もし間違った場合は、} まで読み込んでカンマが足りない(または多い)ことが > わかるまで、何かがおかしいことに気付きません。 } の近くで文法エラーが出ますが、 > perl を助けるために単項の + を使うというように、{ の近くの何かを変更する必要が > あります。 perlの構文解析までは知らん。
265 名前:nobodyさん mailto:sage [2007/10/06(土) 17:49:40 ID:???] >>260 -fを入れることも自分で分からないようではいかんだろって意味であえて書かなかった
266 名前:255 [2007/10/06(土) 19:25:29 ID:PfM+S4yJ] >>264 ありがとうございます。 それでフォーイーチでいいのですか? 用語なんで普通の読み方で本当にいいのかという意味の質問だったのですが。 mapの方ですが、 my $hash = {"A "=>"5" , "s"=>"2" , "d"=>"3"}; これでエラーが出ないんです。"A "でエラーが出ないのに、どうして print map{"$_ " , 1}keys %hash; でエラーが出て print map{$_ ," ", 1}keys %hash; でエラーが出ないのか。 よくわからないのですが、ハッシュリファレンスとしてエラーが出そうなのは後者だと思うんです。 カンマが足りないってことで。 そして前者はブロックとしても式としても何も問題がないと思うのです。 my $test = 1; if("$test " , 1){ print "ok"; } これを走らせてもエラーでないですし。 そこらへんどういうことなのかわかりますでしょうか?
267 名前:255 [2007/10/06(土) 19:28:03 ID:PfM+S4yJ] >>265 -fってなんですか? perl.misty.ne.jp/switch.html ここには載ってないですが。
268 名前:nobodyさん mailto:sage [2007/10/06(土) 19:31:23 ID:???] >>266 >それでフォーイーチでいいのですか? 関数名の読み方に正解なんてないから好きに呼べよ。 余程狂ってなきゃ誰も笑ったりしないよ。 で、結局何が問題なんだ? 結論は既に出てるし、perlの仕様について文句言われても困る。
269 名前:nobodyさん mailto:sage [2007/10/06(土) 19:32:40 ID:???] 釣りなのか読解力がないのか単なる馬鹿なのか
270 名前:nobodyさん mailto:sage [2007/10/06(土) 20:11:35 ID:???] >>267 perldocを嫁
271 名前:nobodyさん mailto:sage [2007/10/06(土) 20:42:22 ID:???] >>267 それはperlのオプション。 あんたが必要なのはperldocのオプションだから、 コマンドラインからperldoc perldocで確認すべし。
272 名前:255 [2007/10/06(土) 20:43:43 ID:PfM+S4yJ] >>268 何故エラーが出るのかわからないのです。>>266 にあるとおりです。 >>264 さんのところの話ではつじつまが合わないのです。 >map { ... は map BLOCK LIST の場合と map EXPR, LIST の場合があります。 どちらとして評価しても print map{"$_ " , 1}keys %hash; これでエラーが出る説明になりません。
273 名前:255 [2007/10/06(土) 20:47:23 ID:PfM+S4yJ] >>271 なるほどつまり-fの意味は perldoc -f map で、mapの仕様を確認しろって事なんですね。
274 名前:nobodyさん mailto:sage [2007/10/06(土) 20:59:58 ID:???] >>272 {"$_ " , 1}をEXPRとして、keys %hashをLISTと解釈すると、コンマが足らない。
275 名前:255 [2007/10/06(土) 22:39:59 ID:PfM+S4yJ] >>274 ん・・・ map EXPR, LIST ↑これかーー! 納得です。ずっと{}の中のコンマばかりに注目してました。{}とLISTの間のコンマのあるなしが問題だたのですね。
276 名前:nobodyさん mailto:sage [2007/10/06(土) 23:23:20 ID:???] フォーイーチでいいんじゃないの?
277 名前:nobodyさん mailto:sage [2007/10/06(土) 23:29:56 ID:???] perldoc に -f をつけるだけで上場できるインターネッツはここですか?
278 名前:nobodyさん mailto:sage [2007/10/07(日) 13:10:36 ID:???] むしろ英単語の for と each をくっつけただけのものを 他になんて読めるのか知りたい
279 名前:nobodyさん mailto:sage [2007/10/07(日) 15:12:27 ID:???] >>278 仏単語の fo と 英単語の reach をくっつけたものという可能性も検討すべきでは?
280 名前:nobodyさん [2007/10/07(日) 18:18:02 ID:LZD6O2BK] フォーチだろ。
281 名前:nobodyさん [2007/10/07(日) 21:49:16 ID:lRWvT8wN] ソケット使ってホームページを取得するプログラムを書いてます。 HTTP/1.1 200 OKが返ってきて、Content-lengthもある程度あるのに、 フッタが何もないことがあるのですがどうしてでしょうか。 正常に見れるサイトもあります。 use Socket; use FileHandle; $host = "www.ftnet.or.jp"; $path = "/FTtuusin/index.html"; $port = 80; $ip = inet_aton($host) || &error("host($host) not found.\n"); $SOCKADDR = pack_sockaddr_in($port, $ip); $res = &connect($host,$path,$port); print $res; exit;
282 名前:nobodyさん [2007/10/07(日) 21:51:37 ID:lRWvT8wN] sub connect { my ($res, $host, $path, $port); $res = ""; $host = $_[0]; $path = $_[1]; $port = $_[2]; # ソケットの生成 socket(SOCKET, PF_INET, SOCK_STREAM, 0) || return -1; # ソケットの接続 connect(SOCKET, $SOCKADDR) || return -2; autoflush SOCKET (1); print SOCKET "GET $path HTTP/1.1\n"; print SOCKET "Referer: $url\n"; print SOCKET "Host: $host:$port\n"; print SOCKET "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\n"; print SOCKET "Connection: close\n"; print SOCKET "\n"; foreach (<SOCKET>) { $res .= $_; } close SOCKET; return $res; }
283 名前:nobodyさん [2007/10/07(日) 21:53:04 ID:lRWvT8wN] レスポンスは HTTP/1.1 200 OK Date: Sun, 07 Oct 2007 11:31:44 GMT Server: Apache/2.0.52 (CentOS) Last-Modified: Fri, 16 Jun 2006 05:41:38 GMT ETag: "4474a-daf-deccc880" Accept-Ranges: bytes Content-Length: 3503 Connection: close Content-Type: text/html
284 名前:nobodyさん mailto:sage [2007/10/07(日) 23:54:11 ID:???] フッタって何の事言ってる?
285 名前:281 mailto:sage [2007/10/08(月) 00:21:06 ID:???] すまん、確かにフッタって言葉は違う気がしてきた。 本文の部分です。htmlが書かれてる部分。
286 名前:nobodyさん mailto:sage [2007/10/08(月) 02:57:53 ID:???] >>281 「何もない」状態を確実に再現できる例を 用意してくれないと、デバッグの手伝いはできないよ。 少なくとも手元の環境だと>>281-282 のコードとサイトは 一応動くし全部取得できている。
287 名前:nobodyさん mailto:sage [2007/10/08(月) 03:06:09 ID:???] HTTPは正確には\nではなく\r\nでそ
288 名前:nobodyさん mailto:sage [2007/10/08(月) 03:32:19 ID:???] HTTP/1.0にしたら解決しましたって答えは無しな。 わざわざ作るなら1.1を使う物を作ろうよ。
289 名前:nobodyさん mailto:sage [2007/10/08(月) 03:33:54 ID:???] 答えじゃないな。解決法だなorz
290 名前:nobodyさん mailto:sage [2007/10/08(月) 06:54:42 ID:???] ちょっとここでいいのかどうかわかりませんが、質問です。 HTML-Parser-3.56を、cpan2rpmで.rpmにリビルドしようとしてたんですが、 make testの段でエラーになります。 (略・・・ t/unbroken-text......ok t/unicode-bom........ # Failed test in t/unicode-bom.t at line 43. # got: 'Parsing of undecoded UTF-8 will give garbage when decoding entities at t/unicode-bom.t line 24. # Parsing of undecoded UTF-8 will give garbage when decoding entities at t/unicode-bom.t line 28. # Parsing of undecoded UTF-16 at t/unicode-bom.t line 31. # Parsing of undecoded UTF-16 at t/unicode-bom.t line 34. # Parsing of undecoded UTF-32 at t/unicode-bom.t line 37. # Parsing of undecoded UTF-32 at t/unicode-bom.t line 40. ・・・・(略) t/unicode............ok t/xml-mode...........ok Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/unicode-bom.t 1 256 2 1 50.00% 1 1 test and 1 subtest skipped. Failed 1/48 test scripts, 97.92% okay. 1/430 subtests failed, 99.77% okay.
291 名前:つづき mailto:sage [2007/10/08(月) 06:55:12 ID:???] で自前で、tar xzf HTML-Pasrer-3.56 perl Makefile.PL make make test したときは、ビルドエラーにならず、 (略... t/xml-mode...........ok All tests successful, 1 test and 1 subtest skipped. Files=48, Tests=430, 5 wallclock secs ( 3.03 cusr + 1.62 csys = 4.65 CPU) と、ちゃんと通ります。 そこで、途中経過のspecファイルと、自前make時の出力を見比べてみると、 1:cd HTML-Parser-3.56 2:grep -rsl '^#!.*perl' . | 3:grep -v '.bak$' | 4:xargs --no-run-if-empty /usr/bin/perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)' 5:/usr/bin/perl -MExtUtils::MakeMaker -e ' print qq|PREFIX=/var/tmp/perl-HTML-Parser-3.56-root/usr| if $ExtUtils::MakeMaker::VERSION =~ /5\.9[1-6]|6\.0[0-5]/ ' | 6:/usr/bin/perl Makefile.PL と、cd HTML-Parser-3.56 から /usr/bin/perl Makefile.PLまでの間になにか挟まってます。(↑のはcpan2rpmで出来たspec) 多分、5行目は、仮インストールPREFIXを指定してるとこなので必要だとは思いますが、2,3,4行目でやってることの 意味がわかりません。
292 名前:つづき2 mailto:sage [2007/10/08(月) 06:56:35 ID:???] ためしに自分で展開したHTML-Parserに、上の部分だけ(5行目以外)shスクリプトにコピペして実行してみると、 make testでエラーになりました。 さらに、2,3部分のみ実行すると、 ./t/document.t ./t/marked-sect.t ./t/dtext.t ./t/msie-compat.t ./t/stack-realloc.t ./t/headparser.t ./t/crashme.t ./t/script.t ./t/filter-methods.t ./t/entities2.t ./t/unicode.t ./t/unicode-bom.t ./eg/hlc ./eg/hform ./eg/hstrip ./eg/htitle ./eg/htextsub ./eg/htext ./eg/hanchors ./eg/hdump ./eg/hrefsub ./mkpfunc ./mkhctype と、こんな結果になるんですが、これをlist(@ARGV)として perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)'に渡してるんだと思うんですが、 この'MY->fixin(@ARGV)'がなにをやってるのかがわかりません。 MakeMaker.pmやそこからuse,requireしてるモジュールから'fixin'関数を探しましたが見つからず、 また、ggってみても、cpan2rpmの途中経過を報告してるページにHITするだけで、これが何を意味してるかがわかりません。 specから、この2,3,4の部分を消してrpmbuildするとちゃんとビルドが通ることは通るんですが、 なにか重大な落とし穴があるような気がして、気持ち悪いです。
293 名前:290 mailto:sage [2007/10/08(月) 07:22:51 ID:???] おっと、MM_Unixのマニュアルに’fixin’を発見。今までWin機にインストールされたマニュアルみても出てこんわけだ。 でも、説明の Inserts the sharpbang or equivalent magic number to a set of @files. で?? sharpbangってなんですか。 さらにUnix版のMakeMaker.pm内で検索かけても’fixin’で出てこない。 なおさら???です。
294 名前:290 mailto:sage [2007/10/08(月) 07:37:52 ID:???] なんべんも連投すいません。 sharpbangってのはどうやらファイルの頭の #!/usr/bin/perl ってのらしいですが、ますます訳がわかりません。 一晩寝てないんでもう頭がバグってきました。 もう寝ます。
295 名前:nobodyさん mailto:sage [2007/10/08(月) 11:25:25 ID:???] > 一晩寝てないんでもう頭がバグってきました。 徹夜なんかする奴はばかです。
296 名前:281 mailto:sage [2007/10/08(月) 12:47:24 ID:???] >>286 >>281 は余計と思われる部分を省いて、通信に関わる部分だけを書いたんですが それを実際に自分で動かしてみたら正常に動きました。 htmlを取得したあとの文字列処理が原因だったようです。 ご迷惑おかけしました。サンクスです。
297 名前:nobodyさん mailto:sage [2007/10/08(月) 15:03:02 ID:???] >>290-294 そこまで辿れてるのならソース見れば? search.cpan.org/src/MSCHWERN/ExtUtils-MakeMaker-6.36/lib/ExtUtils/MM_Unix.pm ザラっと読んだ限りでは shebang (sharpbang) 行を自分の環境に 合うものへ修正しているみたいだけど。
298 名前:290 mailto:sage [2007/10/08(月) 21:22:47 ID:???] 昼間寝てリフレッシュしたんで、追跡再開。 >>297 のおっしゃる通り、’MY->fixin(@ARGV)’で、292のテストスクリプト一式の先頭行が、 #!perl -w から #!/usr/bin/perl -w に書き換えられてる模様。 でその下に3行ほど、 eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}' if 0; # not running under some shell ってゆうコードが追加されてます。 それ以下、use strict・・・からの実行部分は両者(自前makeとcpan2rpm)で一字一句違いなし。 (ここからはmake testでエラーの出る t/unicode-bom.tに絞って追っています) なんで上の追加された3行が原因か?と調べてみると、ここの部分は、どうやら一部の/bin/shが頭の #!/usr/bin/perl(sharpbang)を認識しない時用に直接shから起動させるためのコードの模様。 これが原因ではないっぽい。 う〜んと思ってスクリプトを上から順になぞっていくと、 !!!!!っ! わかったーーー!! このスクリプトの後半部分で、is(join("",@warn), <<EOT)以下で、warningのトラップをしてるんだけど、 うえの3行が追加されたことによって、当然実行部分の行数が3行づつ下がってるんだけど、 warningトラップの各対応行がもともとのまま(つまり実際の行数-3の)部分と比較しようとして is()がこけてmake testがエラってたんです。 >>295 いや〜〜、やっとエラーの原因つかめてすっきりしました。これで今晩はゆっくり寝れます。
299 名前:sage [2007/10/09(火) 19:35:34 ID:oM/XiNAd] Net::Telnetモジュールについての質問です。 ルーターにログインし、$telnet->cmd("show running-config")にて現在のルーターの設定を取得したいのですが、 取得した設定の中に、現在のプロンプトを示す文字列(例えば'#'など)があった場合、そこの行でデータの取得が終わりになってしまいます。 $telnet->promptコマンドにてユーザープロンプトを設定したのですが、その文字列もルーターの設定の中にあった場合、そこで設定の取得が止まってしまいます。 以下に例を書きます。 use Net::Telnet; use strict; my $telnet = new Net::Telnet( Timeout => 10); #ログイン、特権モードへ $telnet->open(host_name); $telnet->login(user_name,password); $telnet->print("enable");#特権モードに $telnet->waitfor("/Pass/i"); $telnet->print(priv_password);#特権パスワード $telnet->waitfor('/#/'); #特権プロンプトで待つ my @show_run = $telnet->print('show running-config'); $telnet->waitfor("hogehoge"); ここのhogehogeに設定した文字列がrunning-config内にある場合、 そこでrunning-configの取得が終了してしまいます。 なにかうまい回避方法があればご教授願います。
300 名前:nobodyさん mailto:sage [2007/10/09(火) 20:11:15 ID:???] >>299 search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm @show_run = $telnet->getlines; とか push @show_run, $line while $line = $telnet->getline(Timeout => 1); で なんとかならんか。Net::Telnet 使ったことないし試してないけど。
301 名前:nobodyさん mailto:sage [2007/10/09(火) 22:13:34 ID:???] 正規表現でもっと詳細に指定してみるとか。
302 名前:nobodyさん [2007/10/09(火) 22:14:34 ID:gGNoM/Xe] Can't locate object method "new" via package "XML::RSS" (perhaps you forgot to load "XML::RSS"?) at XML/RSS.pm line 3. って出たんですがこのエラーはなんですか?
303 名前:nobodyさん mailto:sage [2007/10/10(水) 00:01:33 ID:???] XML/RSS.pmの ソースコードの3行目で XML::RSSのロードを忘れたので オブジェクトメソッドであるnewを 配置できなかった。
304 名前:nobodyさん mailto:sage [2007/10/10(水) 01:09:25 ID:???] >>299 $telnet->prompt('/user prompt $/');
305 名前:nobodyさん mailto:sage [2007/10/10(水) 15:24:05 ID:???] 類似した関数を各ファイルにまとめて、それをuseして使っています。 しかし、それぞれのモジュールで、use CGI としているのですが、 これにより余計な負担がかかっているということはありますか?
306 名前:nobodyさん mailto:sage [2007/10/10(水) 18:20:17 ID:???] 構造を見直すべきだと思うが、 %INCがちゃんとしてくれるから 重複されてロードされるとかはないはず
307 名前:nobodyさん mailto:sage [2007/10/11(木) 16:13:57 ID:???] キャッシュを貯めているフォルダが大きくなりすぎてFTPクライアントではアクセスできません フォルダごと削除したいのですがスクリプトでどうにかできますか?
308 名前:nobodyさん mailto:sage [2007/10/11(木) 17:28:34 ID:???] system "rm -rf /";
309 名前:307 mailto:sage [2007/10/11(木) 17:56:32 ID:???] >>308 消すことができました ありがとうございます
310 名前:nobodyさん mailto:sage [2007/10/11(木) 18:07:02 ID:???] ちょwww
311 名前:nobodyさん mailto:sage [2007/10/11(木) 18:38:41 ID:???] ヤフーで検索した検索の秒数や検索されたURLの一覧を出すような事は Perlで実現可能でしょうか? 例えば「リンゴ」で検索すると自身のサイトで --------------------------------------- ・約27,900,000件 ・0.01秒 ・ja.wikipedia.org/wiki/リンゴ ・www.kcsnet.ne.jp/kyoei ・www.kodomo-iin.com/HL/HL220.html ・www.hasp.tv ・www.yumeringo.com (続く --------------------------------------- このように表示させたいのです。 もし実現可能であれば、どのような仕組みを学べば良いでしょうか。