Perlコーディング初心 ..
219:nobodyさん
07/10/02 19:19:35
>>218
URLリンク(search.cpan.org)
220:nobodyさん
07/10/02 20:12:26
>>215
コードまで書いていただいてありがとうございました。
use <モジュール名> をevalして戻り値を確かめるわけですね。
どうもevalは使うのに躊躇してしまうんですが、こういうときは便利ですね。
>>213
@INCの中を覗くという発想も考えたことがなかったので
やってみたいと思います。
221:nobodyさん
07/10/02 21:03:46 2QBdgnfp
日本語変換の問題について質問です。
コードをEUCで書いて、出力をShift_JISで行うのが目的です。
今はjcode.pl使っています。
activeperlのwinxp用でローカルチェックをしています。
JCODEというモジュールもあるそうですが、activeperlには初期状態でなかったりしますよね。
確か自分は入れた覚えもあるのですが。
オススメは何ですか?
確か他にも変換用のモジュール?はあったと思いますが。
euc,shift_jis,jisの3つだけでのオススメが知りたいです。
222:nobodyさん
07/10/02 21:47:16
>>221
万能解は無いので、Encode / Jcode / jcode.pl / Unicode::Japanese を
一通り使い込んでから、好みと用途に合ったものをお選びなさいな。
223:nobodyさん
07/10/02 23:24:50
いまさらjcode.pl薦めるなよ。
224:221
07/10/02 23:41:50 2QBdgnfp
jcode.plを除いて一番汎用的に使えるのはどれですか?
汎用的って言っても、サーバーやローカル環境で一番広く使えるものです。
一番広まってるモジュールといえばいいのですかね。
225:nobodyさん
07/10/03 00:23:34
リストをリストのままリストの個数を得るにはどうすればいいですか?
(1,2,3,4,5)
これを配列にいれずにってことです。
grepとかでもリストが作られますよね。
そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。
scalar(@{[grep{$_>0}]})
っていうのも同じくなんかなぁと思います。
普通にないなら関数作ろうと思うのですが。
226:nobodyさん
07/10/03 00:41:53
scalar(@{[1,2,3,4,5]})
227:nobodyさん
07/10/03 00:41:53
はあ
228:nobodyさん
07/10/03 01:16:44
システムに依存する組み込み関数が使用できるかどうか
手っ取り早く調べる方法ってなにかな?
229:nobodyさん
07/10/03 01:49:55
>>224
インスコしてなかったら自分で読み込むようにすればいいよ。
use libつかうなり同階層に置いてuseするなり。
230:nobodyさん
07/10/03 01:58:30
>>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
URLリンク(search.cpan.org)
に目を通した上で eval 内で実際に使用して確認。
231:225
07/10/04 00:46:59 kUiVRXqk
>>230
黒魔術みたいなコードはいけないってこのスレで教えてもらいました。
素人ながら納得しました。
ですからあなたもそういうコード書いていてはいけないと思います。
それも教える側でそれを使うと黒魔術が流行ってしまいます。
僕にはあなたのコードが何をしてるのかわかりません。
232:nobodyさん
07/10/04 00:52:08
++$num for (1) x rand 10;
こんな書き方はじめてみたw
7行プログラミングとかに出てきそうだな。
だれか解説というか一般的な形にしてクレクレ
233:nobodyさん
07/10/04 00:57:28
foreach((1) x rand(10)){
++$num;
}
234:nobodyさん
07/10/04 02:06:39
こんなの全然黒魔術じゃないと思うが・・・
235:nobodyさん
07/10/04 03:26:46
中身が1行のfor(もしくはforeach)なんて普通こう書かんか?
↑もう何年もforeachなんて書かずにforで済ませてるからスペル調べちまったw
236:nobodyさん
07/10/04 03:33:49
それは分かりづらい。括弧でくくった方がいいな。
++$num for ((1) x rand 10);
237:nobodyさん
07/10/04 06:44:51
これだからPerlのコードは気持ち悪いんだよな
238:225
07/10/04 07:08:27 kUiVRXqk
((1) x rand(10))
これの意味がわかりません。
1*10とどう違うんですか。
それとforに10とか与える意味も。
0..10ならわかるけど。
239:nobodyさん
07/10/04 08:10:41
このスレは精神障害者ばかりですね。
240:nobodyさん
07/10/04 08:14:34
>>231
その程度の実力で関数を自作するってかw
241:nobodyさん
07/10/04 09:03:58
>>238
ひょっとして
>吐かせた結果を保存しないのなら、目の前を流れていく
>個数を数えるしかない。
の意味がわかってないのか?
お前が一定の個数で決め打ちしたいなら最初からそうすればいいだけ。
242:nobodyさん
07/10/04 09:42:16
>> grepとかでもリストが作られますよね。
>> そういうときにわざわざ配列に入れてから要素数を知るのが面倒です。
grepに限って言えばスカラーコンテキストでは条件が真になる要素数を返すわけだが。
% perl -e 'print scalar(grep { $_ > 0 } 0,1,1,0,1)'
3
243:nobodyさん
07/10/04 09:43:48
x 10ならわかるけどなんでrand(10)なん?
それがいまいちわからんぽ
244:nobodyさん
07/10/04 10:10:16
いつも10だと面白くないと思って乱数にしただけで特に意味はないだろう。
そんなこと気にしてるとハゲるぞ。
245:nobodyさん
07/10/04 10:20:27
>>238
URLリンク(perldoc.jp)
「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さん
07/10/04 17:45:56
これ何?
$|++;
247:nobodyさん
07/10/04 18:42:58
出力バッファの自動フラッシュを抑制
248:nobodyさん
07/10/04 18:43:28
ハニーフラッシュ!
249:nobodyさん
07/10/04 18:44:27
抑制じゃねえ間違えた まあいいや
250:nobodyさん
07/10/04 19:48:49
プログラミングPerlのパッケージ、オブジェクトの章を読んでも意味が
さっぱりわからなかったのですがどうすればいいですか?
みなさんはあそこに書いてあること、あっさりわかりました?
251:nobodyさん
07/10/04 20:48:51
>>250
ラクダ本だけでは実感が掴みにくいような。
URLリンク(www.rfs.jp)
でも解説されてる。
同じ説明でもいろんな説明を見ると分かってくるような。
252:nobodyさん
07/10/04 21:37:38
>>250
URLリンク(fleur.hio.jp)
253:nobodyさん
07/10/05 09:42:06
OOP 勉強したいなら Plagger に入門すればいいよ!
254:nobodyさん
07/10/05 12:41:48
>>251
これは本当に超初心者向けといった感じですね。
>>252
これはわかりやすい!
>>253
こんな面白いものがあったんだ
255:nobodyさん
07/10/06 12:48:34 PfM+S4yJ
foreach(){}
↑フォーイーチみたいな発音でいいですよね・・・?
256:255
07/10/06 13:03:13 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
07/10/06 13:23:18 PfM+S4yJ
ぐるせいや。ぐるせいや。
258:nobodyさん
07/10/06 13:30:22
>>256
perldoc map見れば分かる
259:255
07/10/06 15:01:35 PfM+S4yJ
>>258
すいません。わからないです。
教えてください。
260:nobodyさん
07/10/06 15:40:28
> perldoc map見れば分かる
> map - An utility to map texts from and to unicode
ねーよwww
261:255
07/10/06 17:19:29 PfM+S4yJ
どなたか>>255-256の回答お願いできませんでしょうかm(__)m
262:nobodyさん
07/10/06 17:33:12
print map{("$_ ", 1)} keys %hash;
263:nobodyさん
07/10/06 17:33:28
読み方なんてどーでもいいじゃん
スクールでも始める気か?
264:nobodyさん
07/10/06 17:44:55
>>255
URLリンク(dictionary.goo.ne.jp)
URLリンク(dictionary.goo.ne.jp)
これぐらいは辞書引いたらどうよ。
>>256
URLリンク(perldoc.jp)
> { はハッシュリファレンスとブロックの両方の開始文字なので、
> map { ... は map BLOCK LIST の場合と map EXPR, LIST の場合があります。
> perl は終了文字の } を先読みしないので、{ の直後の文字を見て
> どちらとして扱うかを推測します。通常この推測は正しいですが、
> もし間違った場合は、} まで読み込んでカンマが足りない(または多い)ことが
> わかるまで、何かがおかしいことに気付きません。 } の近くで文法エラーが出ますが、
> perl を助けるために単項の + を使うというように、{ の近くの何かを変更する必要が
> あります。
perlの構文解析までは知らん。
265:nobodyさん
07/10/06 17:49:40
>>260
-fを入れることも自分で分からないようではいかんだろって意味であえて書かなかった
266:255
07/10/06 19:25:29 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
07/10/06 19:28:03 PfM+S4yJ
>>265
-fってなんですか?
URLリンク(perl.misty.ne.jp)
ここには載ってないですが。
268:nobodyさん
07/10/06 19:31:23
>>266
>それでフォーイーチでいいのですか?
関数名の読み方に正解なんてないから好きに呼べよ。
余程狂ってなきゃ誰も笑ったりしないよ。
で、結局何が問題なんだ?
結論は既に出てるし、perlの仕様について文句言われても困る。
269:nobodyさん
07/10/06 19:32:40
釣りなのか読解力がないのか単なる馬鹿なのか
270:nobodyさん
07/10/06 20:11:35
>>267
perldocを嫁
271:nobodyさん
07/10/06 20:42:22
>>267
それはperlのオプション。
あんたが必要なのはperldocのオプションだから、
コマンドラインからperldoc perldocで確認すべし。
272:255
07/10/06 20:43:43 PfM+S4yJ
>>268
何故エラーが出るのかわからないのです。>>266にあるとおりです。
>>264さんのところの話ではつじつまが合わないのです。
>map { ... は map BLOCK LIST の場合と map EXPR, LIST の場合があります。
どちらとして評価しても
print map{"$_ " , 1}keys %hash;
これでエラーが出る説明になりません。
273:255
07/10/06 20:47:23 PfM+S4yJ
>>271
なるほどつまり-fの意味は
perldoc -f map
で、mapの仕様を確認しろって事なんですね。
274:nobodyさん
07/10/06 20:59:58
>>272
{"$_ " , 1}をEXPRとして、keys %hashをLISTと解釈すると、コンマが足らない。
275:255
07/10/06 22:39:59 PfM+S4yJ
>>274
ん・・・
map EXPR, LIST
↑これかーー!
納得です。ずっと{}の中のコンマばかりに注目してました。{}とLISTの間のコンマのあるなしが問題だたのですね。
276:nobodyさん
07/10/06 23:23:20
フォーイーチでいいんじゃないの?
277:nobodyさん
07/10/06 23:29:56
perldoc に -f をつけるだけで上場できるインターネッツはここですか?
278:nobodyさん
07/10/07 13:10:36
むしろ英単語の for と each をくっつけただけのものを
他になんて読めるのか知りたい
279:nobodyさん
07/10/07 15:12:27
>>278
仏単語の fo と 英単語の reach をくっつけたものという可能性も検討すべきでは?
280:nobodyさん
07/10/07 18:18:02 LZD6O2BK
フォーチだろ。
281:nobodyさん
07/10/07 21:49:16 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さん
07/10/07 21:51:37 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さん
07/10/07 21:53:04 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さん
07/10/07 23:54:11
フッタって何の事言ってる?
285:281
07/10/08 00:21:06
すまん、確かにフッタって言葉は違う気がしてきた。
本文の部分です。htmlが書かれてる部分。
286:nobodyさん
07/10/08 02:57:53
>>281
「何もない」状態を確実に再現できる例を
用意してくれないと、デバッグの手伝いはできないよ。
少なくとも手元の環境だと>>281-282のコードとサイトは
一応動くし全部取得できている。
287:nobodyさん
07/10/08 03:06:09
HTTPは正確には\nではなく\r\nでそ
288:nobodyさん
07/10/08 03:32:19
HTTP/1.0にしたら解決しましたって答えは無しな。
わざわざ作るなら1.1を使う物を作ろうよ。
289:nobodyさん
07/10/08 03:33:54
答えじゃないな。解決法だなorz
290:nobodyさん
07/10/08 06:54:42
ちょっとここでいいのかどうかわかりませんが、質問です。
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:つづき
07/10/08 06:55:12
で自前で、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
07/10/08 06:56:35
ためしに自分で展開した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
07/10/08 07:22:51
おっと、MM_Unixのマニュアルに’fixin’を発見。今までWin機にインストールされたマニュアルみても出てこんわけだ。
でも、説明の Inserts the sharpbang or equivalent magic number to a set of @files. で??
sharpbangってなんですか。
さらにUnix版のMakeMaker.pm内で検索かけても’fixin’で出てこない。
なおさら???です。
294:290
07/10/08 07:37:52
なんべんも連投すいません。
sharpbangってのはどうやらファイルの頭の
#!/usr/bin/perl ってのらしいですが、ますます訳がわかりません。
一晩寝てないんでもう頭がバグってきました。
もう寝ます。
295:nobodyさん
07/10/08 11:25:25
> 一晩寝てないんでもう頭がバグってきました。
徹夜なんかする奴はばかです。
296:281
07/10/08 12:47:24
>>286
>>281は余計と思われる部分を省いて、通信に関わる部分だけを書いたんですが
それを実際に自分で動かしてみたら正常に動きました。
htmlを取得したあとの文字列処理が原因だったようです。
ご迷惑おかけしました。サンクスです。
297:nobodyさん
07/10/08 15:03:02
>>290-294
そこまで辿れてるのならソース見れば?
URLリンク(search.cpan.org)
ザラっと読んだ限りでは shebang (sharpbang) 行を自分の環境に
合うものへ修正しているみたいだけど。
298:290
07/10/08 21:22:47
昼間寝てリフレッシュしたんで、追跡再開。
>>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
07/10/09 19:35:34 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さん
07/10/09 20:11:15
>>299
URLリンク(search.cpan.org)
@show_run = $telnet->getlines; とか
push @show_run, $line while $line = $telnet->getline(Timeout => 1); で
なんとかならんか。Net::Telnet 使ったことないし試してないけど。
301:nobodyさん
07/10/09 22:13:34
正規表現でもっと詳細に指定してみるとか。
302:nobodyさん
07/10/09 22:14:34 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さん
07/10/10 00:01:33
XML/RSS.pmの
ソースコードの3行目で
XML::RSSのロードを忘れたので
オブジェクトメソッドであるnewを
配置できなかった。
304:nobodyさん
07/10/10 01:09:25
>>299
$telnet->prompt('/user prompt $/');
305:nobodyさん
07/10/10 15:24:05
類似した関数を各ファイルにまとめて、それをuseして使っています。
しかし、それぞれのモジュールで、use CGI としているのですが、
これにより余計な負担がかかっているということはありますか?
306:nobodyさん
07/10/10 18:20:17
構造を見直すべきだと思うが、
%INCがちゃんとしてくれるから
重複されてロードされるとかはないはず
307:nobodyさん
07/10/11 16:13:57
キャッシュを貯めているフォルダが大きくなりすぎてFTPクライアントではアクセスできません
フォルダごと削除したいのですがスクリプトでどうにかできますか?
308:nobodyさん
07/10/11 17:28:34
system "rm -rf /";
309:307
07/10/11 17:56:32
>>308
消すことができました
ありがとうございます
310:nobodyさん
07/10/11 18:07:02
ちょwww
311:nobodyさん
07/10/11 18:38:41
ヤフーで検索した検索の秒数や検索された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
(続く
---------------------------------------
このように表示させたいのです。
もし実現可能であれば、どのような仕組みを学べば良いでしょうか。
312:nobodyさん
07/10/11 19:19:28
ヤフーがAPI用意してればできるんじゃない?
313:nobodyさん
07/10/11 19:30:54
ヤフーAPIならとっくに公開してるぞ
314:nobodyさん
07/10/12 04:05:22 i4CjOo+I
XML::RSSについて質問です。
rssのバージョンが1.0の場合、以下のソースの#エラーが出るの部分で
Use of uninitialized value in concatenation (.) or string at rss line 21.
というエラーが出てしまいます。
他の<link>タグなどの場合は表示できるので
<dc:date>などの名前空間を使っているタグの場合に
上記のエラーが出てしまうみたいです。
どうすれば、名前空間のタグデータも表示できますか?
my $rss = new XML::RSS;
my $url = "URLリンク(hoge.con)
my $dat = get($url);
my $result = $rss->parse($dat);
foreach my $item ( @{$rss->{'items'}} ){
if($result =~ /1.0/){
print "@{$item_list}[0]->{'dc:date'}\n"; #エラーが出る
}elsif($result =~ /2.0/){
print "@{$item_list}[0]->{'pubDate'}\n";
}
}
315:nobodyさん
07/10/12 04:09:29
print @{$item_list}[0]->{'dc:date'} || '', "\n";
とか。
316:314
07/10/12 04:37:32
すいません。
ソースがおかしかったんで張りなおします。
my $rss = new XML::RSS;
my $url = 'URLリンク(hoge.com)';
my $dat = get($url);
my $result = $rss->parse($dat);
foreach my $item ( @{$rss->{'items'}} ){
if($result =~ /1.0/){
print "$item->{'dc:date'}\n"; #エラーが出る
}elsif($result =~ /2.0/){
print "$item->{'pubDate'}\n";
}
}
317:314
07/10/12 04:50:59
自己解決しました。
print "$item->{'dc'}->{'date'}\n";
という記述でうまくいきました。
お騒がせしました。
318:nobodyさん
07/10/12 22:46:03 w18ekEW+
ここにいる人は仕事でもPerlに問わずプログラミングをしてるのですか?
そういう仕事に就くにはやはり学校などを出てる必要があるのでしょうか?
いわゆる大卒みたいな最低条件というか。
前から一度経験してみたいなと思っていましたが、そういうアルバイトはないんでしょうか。
建設現場の日雇いみたいに気軽にやってみたいです。
本業はありますが、結構時間はあるほうなので。
この世界はどうなってるのでしょうか?
319:nobodyさん
07/10/12 22:50:35
仕事に関する大事なことを自分で調べず2chで聞いてる時点で・・・
320:nobodyさん
07/10/12 22:59:11
セックスアパートって会社で働くといいよ。
321:nobodyさん
07/10/12 23:23:59 w18ekEW+
2ちゃんをバカにしてる利用者ほどその利用方法はひどいって法則誰かが言ってましたね。
322:nobodyさん
07/10/13 00:20:58
プログラマーなんて趣味の延長だろ
24時間PCの前でカタカタやるのが楽しくなきゃやってられない
323:nobodyさん
07/10/13 00:22:01
「CGI Perl 実務経験なし 初心者OK」で求人サイト検索すりゃいいべ。
324:nobodyさん
07/10/13 00:26:24
>>321
その手の切り返しパターンもう飽きた
325:nobodyさん
07/10/13 00:41:31
多分しっかりやらないとプログラムは楽しくない。
326:nobodyさん
07/10/13 02:59:15
プログラマーは3桁残業にも耐えられる精神力+体力が必要。
年取ったら高確率で禿げそう。
327:nobodyさん
07/10/13 15:06:53 iKtPwiMH
$a = 0000010
この文字列を数字に変える($ = 10)
簡単な表記はありますでしょうか?
sprintf使ってみたのですが上手くいきません
328:nobodyさん
07/10/13 15:10:02
それは文字列じゃなくて8進数じゃ?
もし$a= "0000010"; なら 関数int使えばいい
329:327
07/10/13 15:13:51
すみません
自己解決しました
%dで
330:318
07/10/13 16:40:37 5Vuk1MtC
この雰囲気からすると日雇いなんかなさそうですね。
しかしこういう雰囲気からすると日雇いなんかありませんよね。
ちょっと待って日雇いなんかありませんよ。
実際いきなりそれを本職とするのは厳しい。
どういう雰囲気なのか味わいたいだけと考えるとそういう会社で働いてる人脈を作るのがよさそうですね。
ここの本職の方は会社と自宅以外にどこに行きますか?
明日とかきっと休日だと思いますけど、街へ行ったりするんですか?
家族持ちだとどうしても接点を取っても仲良くはなれなさそうだから。
独身がいい。女を紹介とかすればそれなりに仲良くなれる気がするんですが。
どうですかね。女は嫌いですか?
331:nobodyさん
07/10/13 18:43:45
コーディング初心者質問スレであって、IT 土方向けの仕事斡旋スレではないんだよなぁ。
332:318
07/10/13 19:19:29 5Vuk1MtC
なるほど。
やはり頭は固いと。
333:nobodyさん
07/10/13 21:12:30
釣りにしては程度が低すぎるんだが、これは素で言ってるのか?w
だとしたらやばすぎる。
334:nobodyさん
07/10/13 21:40:38
スルーしとけよ
335:nobodyさん
07/10/13 21:48:34
スレ違いという自分のミスを指摘され
馬鹿にされ悔しさのあまり慢心で書き
出した文章がこれ
336:nobodyさん
07/10/13 21:53:08 fl6REYk4
IPアドレスから携帯かPCかを判断したいんですがどうやればいいんですか?
337: ◆TWARamEjuA
07/10/13 22:06:27
ここで宣う前に「調べる」ことをお勧めいたします。
338:336
07/10/13 22:23:53
ググっても分からなかったので教えてもらえませんか
339:nobodyさん
07/10/13 22:31:44
どうググったのですか
340: ◆TWARamEjuA
07/10/13 22:35:33
(´-`).。oO(ググる≠調べる ググる=さがす ・・・と思うけれども。。。)
341:336
07/10/13 22:58:35
perl IPアドレス 携帯か 判断
とかで検索したけど出てきませんでした
342:nobodyさん
07/10/13 23:16:28
俺なら
perl 携帯 判定
でぐぐるな。
343:nobodyさん
07/10/13 23:43:01
cpanでmobile ipとかで調べたらいいんじゃね?
344:nobodyさん
07/10/13 23:50:32
>>342
それだとUA判定が多いんじゃ?
携帯 IPアドレス wiki で検索かけたらあったぞ
345:336
07/10/13 23:56:59
UAで判定できるなんて知らなかった。
IPアドレスより楽みたいですね。
346:342
07/10/14 00:01:08
>>344
そうだった。IPで判定したいんだったな。これは失礼。
347:336
07/10/14 00:06:15
UAで判定したら携帯ブラウザエミュだと携帯で判定されるのか。
IPアドレスの方が確実ってことかな?
348:336
07/10/14 00:16:57
携帯ってIPアドレスの種類どんどん増えてってたのか・・・
諦めてUAで判定します。
349:nobodyさん
07/10/14 03:31:42
CPANにモジュールあるよ。
350:nobodyさん
07/10/14 06:50:16
フォームって別ドメインのCGIスクリプトにも送信できたっけ?
351:nobodyさん
07/10/14 07:54:33
>>349
それって DIS るのが生きがいの人のだっけ?
352:nobodyさん
07/10/14 07:54:34
open関数で開けるファイルって同じサーバーにある必要がありますよね?
別サーバーにあるファイルの情報を参照する方法はあるのでしょうか?
あるのでしたら方法をお教え下さいますようお願いします。
353:318
07/10/14 08:50:07 a8OZDemC
>>333-335
別にバカにしてるわけでもないのに、どうしてすぐそうムキになるかね。
逆に聞きたいが、自分は頭が固くないとでも思ってるのかい?
354:nobodyさん
07/10/14 09:23:55
おまい自分が雇う側の立場になって考えてみな
日雇いで次の日に来るかどうか解らない奴を雇う?
スキルレベルも解らずに雇う?
つか、銭もらえるだけのスキルはあるのか?
355:318
07/10/14 12:02:37 a8OZDemC
>>354
>日雇いで次の日に来るかどうか解らない奴を雇う?
もしかして日雇い知らない?
プログラミングに関わらずどんな仕事でも適当なやつはいらないし雇わないよ。
>スキルレベルも解らずに雇う?
どんな職業でも同じ。
君は雇う側になったことがなさそうだ。
356:nobodyさん
07/10/14 12:10:23
もう頭のおかしいヤツ相手にすんなよ
ま、いちばん悪いのは病院に連れて行かない親なわけだが
357:nobodyさん
07/10/14 13:05:35 9kSbwdFL
画像付きのBBSに、アクセスログ記録を付けて使っています
ところが、特定の人だけ同時に3回記録されています
WindowsNT5.1 ブラウザが「Sleipnir」
たぶんブラウザのせいだと思いますが、
1回のアクセスでサーバに3回の動作をさせている事になります
一体どういう事なのでしょう? perlの書き方のせいでしょうか?
358:nobodyさん
07/10/14 13:19:59
実際一番ムキになってるのは君じゃん(w
359:nobodyさん
07/10/14 17:32:02
>>357
とだけ言われてもなぁ、多重コネクションで画像DLなんてよくある話だし。
で、どうしたいのさ?
360:nobodyさん
07/10/14 18:22:36 9kSbwdFL
>>359
画像付きといってもファイルをたまにアップするだけで
ほとんどの利用はテキストの書き込みと、BBSの読み込みです
会員制サイトなのでアクセスの数は少ないです
サイトの関連ログが飛ぶトラブルがあって原因の一つと思います
まず、なぜこの環境の人がアクセスすると、同時刻に3回CGIが動作して
しまうのか、その原因を知りたいです
BBSのスクリプトでは、@の配列に入れたものをforeachで展開しながら
html表示します、アクセスログはこのプロセスに入れ込んでます
361:nobodyさん
07/10/14 19:25:16
当人じゃないからわからんが、Javascriptで読み込みなおしするような
なんかをしてるんじゃね?
本人に聞いたらいいよ。
362:nobodyさん
07/10/14 19:59:35 RGItsPbe
質問です。
CPANモジュールまとめサイトってないですかね?
いろいろググったけどそれらしきものがなかったので。
363:nobodyさん
07/10/14 20:01:11 RGItsPbe
>>362
追記
日本語モジュール解説 まとめサイトです
364:nobodyさん
07/10/14 20:37:02
perldoc.jp
365:nobodyさん
07/10/14 20:42:54
basic認証が必要な自サイトのアクセスログからある部分だけ抽出して表示させたい
のですがまずcgiでアクセスするにはどうすればいいでしょうか?
366:nobodyさん
07/10/14 20:49:09 RGItsPbe
>>364
そこで全部見れるんだ。
ありがとー
結構数すくないっすね
ありがっつ
367:nobodyさん
07/10/14 22:03:04 5YQaKvWD
ブログのページからソースを取ってきてテキスト部分だけを取り出したいんですが
use LWP::Simple;
$buff = get("URLリンク(www....."));
print $buff;
これでとりあえずソースだけは取ってこれたのですが、テキスト(記事)の部分だけ取り出す方法がわかりません。
よろしくお願いします
368:nobodyさん
07/10/14 22:05:45 RGItsPbe
>>367
正規表現でちょちょいのどんじゃないですかね?
一度調べてみることをおすすめします。
369:nobodyさん
07/10/14 22:15:05 9kSbwdFL
>>361
なるほど
当方MacなのでParallelsのWinに「Sleipnir」入れてみましたが、
プラグインかなにかなんでしょうね
有り難うございました
370:nobodyさん
07/10/15 00:22:13
>>367
最近はこういうのが流行みたいです
Web::Scraper
URLリンク(search.cpan.org)
371:nobodyさん
07/10/15 00:43:20
>>369
ぐぐればトップに出てくるだろうに
372:nobodyさん
07/10/15 00:44:21
ごめん、371は勘違い
373:nobodyさん
07/10/15 01:06:24
nikonikoにもScraperネタある。
URLリンク(www.nicovideo.jp)
374:nobodyさん
07/10/15 03:46:48
Web::Scraper が重いんだけど、どうにかならないの?
375:nobodyさん
07/10/15 05:35:56
不満は作者に直接言う
改善案を出す
パッチ送る
376:nobodyさん
07/10/15 12:15:17
男は黙って正規表現一択
scrAPIは女の様な軟弱者が使う物
377:nobodyさん
07/10/15 14:20:07
youtubeに上げなおしてくれ。
ニコニコ垢なんかもってないし使いたくも無い。
378:nobodyさん
07/10/15 21:15:14
カレンダーを作りたいと思っているんですが、ライブラリはありませんか?
379:nobodyさん
07/10/15 22:05:51
>>378
URLリンク(search.cpan.org)
380:nobodyさん
07/10/15 23:41:31
処理の進捗状況を表示する一番よい方法は何ですか?
一定期間ごとにファイルに書き込むことしか思い付きません。
381:nobodyさん
07/10/15 23:43:46
>>380
それでいいんじゃねーの
一番簡単だし
382:nobodyさん
07/10/16 06:05:03
$| = 1;
って何かいいことあるの?
383:nobodyさん
07/10/16 08:47:04
意味をわかった上で言ってるのか?
それとも意味を聞いてるのか?
とりあえず「perl コマンドバッファリング」あたりでググれ。
384:nobodyさん
07/10/16 10:56:39
自分が使ってるサーバーがLWPが使えないようなので、socketで別サーバーのファイル内容を拾って展開させようとしたんですが、
ローカルではちゃんと動くのにサーバーにアップすると凍ってしまいます。
リストにある複数のブログのrss取得して最新のブログ3件の記事表示、みたいなのがやりたいんですが、
サーバーがLWPの許可してないと難しいですか?
なにかいいやり方あったらお教えください。
385:nobodyさん
07/10/16 11:11:22
fpingの出力値の数字だけを抜き出すプログラムを作りたいのですが、うまくできません。
input.txtという名前に下のようなfpingの出力を入れ
www.yahoo.co.jp:[0], 84 bytes, 18.1 ms (18.1 avg, 0% loss)
www.yahoo.co.jp:[1], 84 bytes, 23.2 ms (20.7 avg, 0% loss)
18.1
23.2と出力したいです。
bytes,より前を切り取り、ms ( も切り取ろうとして
$fping = "./input.txt";
open(A,"$fping")|| die "Can not open file";
@b = <A>;
close (A);
foreach $c(@b){
$c = grep(/(.*?)bytes, (\d{1,4}\.\d{1,2} ms) \(/,$c);
}
foreach $c(@b){
print "$c\n";
}
というプログラムを作ったんですが、うまくいきません。
どこを直せばいいでしょうか?
386:nobodyさん
07/10/16 11:26:03
>>385
$c =~ /bytes, (.*?) ms/;
$c = $1;
じゃだめなん?
387:385
07/10/16 12:33:21
>>386
レス遅れてすいません。
できました!
ありがとうございます!!
助かりました、ホントありがとうございます!!!
388:nobodyさん
07/10/16 12:40:52
>>385
出遅れた…。
perl -lne "print /(?<=bytes, )(.+?)(?= ms)/" input.txt
389:nobodyさん
07/10/16 13:22:24
>>384
どこの鯖使ってるか知らんが、LWP使えないようにしてるってことは
FWでoutboundが遮断されてる可能性が高く、だとすればどうしようもない
390:nobodyさん
07/10/17 00:29:17 7VxwUF8E
SNSサイトにperlを使って接続って無理?
391:nobodyさん
07/10/17 00:37:06
日本語でOK
392:nobodyさん
07/10/17 01:05:09
>>390
WWW::Mixi
WWW::Myspace
393:nobodyさん
07/10/17 08:03:38 BedUMdjt
おはようございます。
下のような流れのcgiで
複数のクライアントから接続された場合
変数$gHogeはクライアント毎に保たれますか?
それとも上書きされちゃいますか?
my $gHoge = ""; #クライアントからポストされた値が入る。
〜$gHogeを扱う長めの処理が続く。
394:nobodyさん
07/10/17 08:36:36
>>393
実行される度にプロセスが作られるから上書きなんてされない
395:393
07/10/17 09:01:24
>>394
そうですか。期待通りの結果でよかったです。
朝早くからありがとうございました。
396:nobodyさん
07/10/17 23:05:49 7VxwUF8E
>>392???
わからないので要望スレに逝ってきますorz
397:nobodyさん
07/10/18 00:34:50
>>396
ググることもできないのか
398:nobodyさん
07/10/18 01:48:20
モジュールがわからなくてSNSに接続しようとは・・・
399:バターズ
07/10/18 22:40:14
コロンが二つならんでいるのは
ダブルコロンって言うんだよ
400:nobodyさん
07/10/20 00:37:33 Ja84SJeF
Location ではtargetが指定できませんが、呼び出したときの
属性は生きるってどこかに書いてありました
どういうことでしょう
ssiのhtmlファイルの中に書いた、iframeのCGIまたは#exec cgiで
クッキー認証できなかったら全画面を再認証画面に飛ばしたいのですが、
やはり無理でしょうか?
401:nobodyさん
07/10/20 05:18:19 VLTga6QI
print <<EOM;
<a href="hoge.html">hoge</a>
EOM
と、
print "<a href=\"hoge.html\">hoge</a>\n";
ではどちらの方が実行速度が速いですか?
402:nobodyさん
07/10/20 06:50:46
>>401
ほぼ同じ。
URLリンク(boobar.hp.infoseek.co.jp)
403:nobodyさん
07/10/20 07:40:43 VLTga6QI
>>402さん、ありがとうございます。
大変参考になりました。
404:nobodyさん
07/10/20 07:47:37 x+Q9ulv4
おはようございます。
以下のスクリプトについて質問です。
outフォルダ内の.txtファイル全てに対して
ある作業をするというスクリプトなんですが、
ファイルオープンのところでそんなファイルはないから
開けないというエラーが出力されます。
例:hoge.txtがある場合
OPEN ./out/hoge.txt file: No such file or directory at check line 22.
どこが間違ってるか教えてください。お願いします。
OSはWindowsXPです。
my @directories_to_search = ('./out/'); #対象のフォルダ
find(\&wanted, @directories_to_search);
sub wanted{
my $filePath = $File::Find::name;
my $find = index( $filePath, ".txt" ); #.txtを対象
unless ($find >= 0) {
return 1;
}
open FH_READ, "<$filePath"
or die "OPEN $filePath file: $!";
#ある作業をする。
close FH_READ;
}
405:nobodyさん
07/10/20 08:21:11
>>404
22行目ってホントにopen文の所か?
406:404
07/10/20 08:33:09
>>405
え?open文のor dieのエラーメッセージが出力されているから
open文でエラーが発生していると思うんですが・・・
407:nobodyさん
07/10/20 10:42:05
読んで字の如しとしか。
まさかmod_perlじゃないよな?
408:nobodyさん
07/10/20 10:55:56
>>404
openに渡すのは「$filePath」じゃなくて「$_」
File::Findの解説ちゃんと読め
409:半角全角が混在する行が一定の文字数を超えたら折り返すようにしたい
07/10/20 14:21:49 g/E6yd0f
メールフォームを作っています。同マシン上のsendmailを使って送るものです。
送信するメールの本文において、半角全角が混在する行の文字数を数え、
一定の文字数(例えば半角72文字、全角36文字)を超えた行だけを
強制的に折り返したいと考えています。
どのようにするのがよいでしょうか?
lengthはバイト数を返す関数なので、
全角文字の真ん中で折り返されると困ることになると考えてます。
もしかすると、長い行はsendmail側が自動で折り返してくれたりするのでしょうか?
それとも、何かほかの関数で簡単に数えたりできるのでしょうか?
なお、カスタマイズの自由度を考えて自作しているので、
「どこそこのメールフォームを使え」というのは勘弁してください。
以上、よろしくお願いします。
410:nobodyさん
07/10/20 14:28:07 o1wAy6B9
eval ($hoge); の実行した値を変数に入れるにはどうしたらいいでしょうか?
$@ だと、evalでのエラーの値が入る
でも、実行値は...?
お願いします。
411:nobodyさん
07/10/20 14:37:23
>>410
$result = eval($hoge);
じゃダメなん?($resultに実行結果、$@にエラーメッセージ)
参考
URLリンク(www.tohoho-web.com)
412:nobodyさん
07/10/20 14:55:48 o1wAy6B9
>>411 その通り!ありがとう。
短い$hogeだと関数が成功した1しか返さないことがあるようでアレ違うわと思っていました。
>>409
ちょっと離れるので投げっぱなしになってしまいそうだけど
解答してくれる人が現れる間に考えていました
use utf8;
use Encode;
$str = '
eval ($hoge); の実行した値を変数に入れるにはどうしたらいいでしょうか?
$@ だと、evalでのエラーの値が入る
でも、実行値は...?
お願いします。
';
@stream = split(/\n/,$str); #最初に渡された文字列を 改行 を区切りとして @stream に配列として読み込んだ
map{ s{(.......)}{$1\n}g } @stream; #”8文字”単位で改行を入れてる
map{print encode(sjis,$_)}@stream; #各行を出力するときにsjisに変換してる
とか、なかんじでどうよ?
ただし1バイト文字の扱いがなんか変。
*たぶんutf8でけつまずいてるかんじ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4893日前に更新/271 KB
担当:undef