Perlについての質問箱 12箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGPerlについての質問箱です
"There's more than one way to do it"ということで
ぱぁるの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc5.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするので
WEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
姉妹スレッド(Perl コーディング初心者質問コーナー Part37@WebProg)
http://pc5.2ch.net/test/read.cgi/php/1093106507/
過去ログは>>2-1001あたり
0002デフォルトの名無しさん
NGNG2 http://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 http://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 http://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 http://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 http://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 http://pc2.2ch.net/test/read.cgi/tech/1068051036/
8 http://pc2.2ch.net/test/read.cgi/tech/1074151549/
9 http://pc5.2ch.net/test/read.cgi/tech/1079114157/
10 http://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 http://pc5.2ch.net/test/read.cgi/tech/1090889189/
# 7と8が見つからない、誰か探して
0003デフォルトの名無しさん
NGNGPerlプログラミング講座: http://www5a.biglobe.ne.jp/~n_rieko/perl/
[本]
リャマ: http://www.oreilly.co.jp/BOOK/lperl3/
駱駝: http://www.oreilly.co.jp/BOOK/pperl3v1/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/BOOK/pcook/
[オンラインマニュアル]
Perldoc.com: http://www.perldoc.com/
perldoc.jp: http://www.perldoc.jp/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/%7ekbk/perl5.005/
[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://member.nifty.ne.jp/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
0004デフォルトの名無しさん
NGNGそのころのスレのログは見つからないのが多いし。
とりあえず手元の 2ch ブラウザのログからサルベージしたのを置いときます。
http://nuna.at.infoseek.co.jp/1068051036.html
http://nuna.at.infoseek.co.jp/1068051036.dat
http://nuna.at.infoseek.co.jp/1074151549.html
http://nuna.at.infoseek.co.jp/1074151549.dat
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGスレ立て乙
0010デフォルトの名無しさん
NGNG回答者のレベルにもよるが回答も役に立つことが多い品
0011デフォルトの名無しさん
NGNG二つのファイルを使うのですが、
a 1 0
b 2 2
d 3 0
e 2 1
g 5 1
...
というファイルと、
>a
>b
>e
>f
>g
...
という形式のファイルがあるのですが、これを
a 1 0
b 2 2
e 2 1
g 5 1
のように出力したいのですが、やり方がわかりません。
つまり、下の方のファイルを参照する(上のファイルのアルファベットが
下のファイルにもあったら、そのアルファベットと続く数字を出力する)
方法がわかりません。どなたか教えてください。
0012デフォルトの名無しさん
NGNGはじめのファイルを読み、a 1 0 から $Hash{'a'} = 10 というふううにハッシュを作っておく。
2番目のファイルを読み、>X があれば "X $Hash{'X'}" を出力。
0013デフォルトの名無しさん
NGNG1番目のファイルを data.dat 、2番目のファイルを index.dat とする。
my %dat;
open(IN, 'data.dat') or die;
foreach (<IN>) {
@_ = split(" ", $_, 2);
$dat{$_[0]} = $_[1];
}
close(IN);
open(IN, 'index.dat') or die;
foreach (<IN>) {
/(\w+)/ or next;
print "$1 $dat{$1}\n" if $dat{$1};
}
close(IN);
0014デフォルトの名無しさん
NGNGopen(IN, 'data.dat') or die;
foreach (<IN>) {
のあとに、
chomp;
を追加。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG口悪いね・・・
"There's more than one way to do it"な。
0018デフォルトの名無しさん
NGNG>a ame
>b kawa
>d taiyo
>e arare
>g hyo
>h kumo
>j taiyo
>l kawa
というファイルと、
>a ame
>c kawa
>d taiyo
>e arare
>g kawa
>j taiyo
>l kawa
>m hyo
というファイルがあるのですが、ここでプログラムを使って
b c g kawa
g m hyo
と出力できるようにしたい{二つのファイルを比べて、アルファベット(aなど)
と名前(ameなど)が両方一致しているもの以外で、名前(ameなど)が同じものの
アルファベットをすべて並べて表示する}のですが、複雑でよくわかりません。
どなたか教えてください。
0019デフォルトの名無しさん
NGNG古参のUNIXユーザさんかな?
foreachはループ変数使うforではないことを
明示できるので、使う人は多いと思いますよ。
0020デフォルトの名無しさん
NGNGQ. なぜ効率が悪いか説明せよ(3点)
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGそういう意味ね。
答:最初にメモリにすべて読み込むため
002321
NGNG0024デフォルトの名無しさん
NGNG"TMTOWTDI" を免罪符のように使うのはどうかと思う。
http://www.jin.gr.jp/~nahi/d/990223-comp.html
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNGって慣用句だから>>15はforeachをそこで使うなんて個性的って意味なんでしょ
0028デフォルトの名無しさん
NGNG良いドキュメントですね。
「TMTOWTDI」は、「だから、どう書こうと構わない」ってことじゃないですよね。
肝に命じておきたい。
0029デフォルトの名無しさん
NGNGなんではっきりアホだと言わんのかね?
0030デフォルトの名無しさん
NGNGforeach と while の交換なんて簡単にできるんだから、
サンプルとしては >>15 ので十分だと思うが。
ファイルが大きい場合がありうるなら while を使えばよろしい。
しかもそこは質問の本質ではないし。
少し前にも stat の結果をキャッシュしてない というレスが
あったが、それと同レベル。
サンプルは本質の個所が分かりやすければ及第とみていいでしょ。
もし不満があるなら、ケチつけずに
補足という形で自分が付け足せばいい。
なんでそんなに粘着してるんだ?
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNGファイルが大きいときにwhileに変えるって自分で思いつけるかなあ
0034デフォルトの名無しさん
NGNGそう言われたら、自分でラクダ本読めとレスするしか
なくなると思うぞ。
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG普通はそうんだんだけどね。
0037デフォルトの名無しさん
NGNGそれだけのようにしか見えないんだが。
0038デフォルトの名無しさん
NGNG>>15おまいの責任はおもいぞ。
それから、まだグダグダ言ってるやつが>>15なら、
一度で完璧なサンプルを提示してみろよ。
問題は>>18。
できないなら黙って見てなさい。
0039デフォルトの名無しさん
NGNGだから >>35 だってばさ。
0040デフォルトの名無しさん
NGNG漏れは17みたいなレスの方がいらんと思うよ
0041デフォルトの名無しさん
NGNG問題は>>18らしいぞ。
0042デフォルトの名無しさん
NGNGなるほど>>12だけ示して後は>>34というのもアリだな
0043デフォルトの名無しさん
NGNGmapならまだわかるんやけど。
0044デフォルトの名無しさん
NGNGwhile(<>){
my ($char, $name) = m/^>(\w)\s+(\w+)/;
die unless defined $char;
$report{ $name } .= $char unless defined $report{ $name}
and $report{ $name } =~m/$char/;
}
print "$_ @{[split //, $report{ $_ }]}\n" for sort keys %report;
0045デフォルトの名無しさん
NGNGそれはそうと>>30も>>13も前スレ>>886も同一人物かな?
最近饒舌で妙に突っ込み甲斐のあるコード書く人がちらほら
自分の書いたコード投稿する前に読み返そうね(・∀・)
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNGいんじゃないっすか?
0048デフォルトの名無しさん
NGNGぇぶぷろぐ板かとオモタよ。。。
0049デフォルトの名無しさん
NGNGダメとまでは言わないが、質問させてくれ
・どこでそう習ったのか?
・while(<>) で回しているサンプルを見た事があるか?
・もしあるのなら、それではなく foreach にした理由は何故か?
もしかして、なんか悪い本 or サイトがあるのか?
0050デフォルトの名無しさん
NGNG@data = <FH>;
とかしてforeachさせてる所が多いよ
0051デフォルトの名無しさん
NGNGmy %report;
while(<DATA>){
my ($char, $name) = m/^>(\w)\s+(\w+)/;
die unless defined $char;
$report{ $name }{ $char }++;
}
for my $name(sort keys %report){
my @moji = grep { $report{ $name }{ $_ } == 1 } keys %{$report{$name}};
next if @moji == 0 or @moji == 1;
print "$name @moji\n";
}
暇だね。俺って。。。
0052デフォルトの名無しさん
NGNG<>に変えてね。
0053デフォルトの名無しさん
NGNGそんなの決まってるじゃないか。
なぜforeachで回すか・・・
面 白 そ う だ か ら
これ以外考えられない。
0054デフォルトの名無しさん
NGNGここだけの話bbs.cgiもリストコンテキストで<FH>を
うわなにをするやめらqすぇdrftgyふじこlp;@
0055デフォルトの名無しさん
NGNGbbs.cgi、read.cgiってC++で書かれてるって聞いたけど、ネタなの?
0056デフォルトの名無しさん
NGNGいにしえの昔には Perl で書かれていたとかいなかったとか一体どっちやねんと。
0057デフォルトの名無しさん
NGNGunix.swfでの知識しかないだけども。
0058デフォルトの名無しさん
NGNG今はCで書かれてる。
どこかで配布してた。
管理用のCGIはPerlだったと記憶してる。
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNGそれで正解
0061デフォルトの名無しさん
NGNGそれはまた別の話じゃない?
コード見ればバッファ(@data)に一気に取り込んでるのがすぐ分かるし。
006243
NGNGソースキボン。
006343
NGNG0064デフォルトの名無しさん
NGNG>>20
0065デフォルトの名無しさん
NGNGもし本当にないなら自明すぎて誰も書いてないんだろう。
0066デフォルトの名無しさん
NGNGforeach だと全部読み込まなければならないので、目盛り消費が異常に多くなる。
while だと目盛りを殆ど消費しない。
1GBくらいあるファイルを処理するときは while 、高々数メガ程度のときは foreach
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG逆に考えてみよう。なぜ foreach だと駄目なのか。
・途中で last する可能性があっても foreach は全て読むので
無駄な処理をする事になる。
・現在の行番号を知りたい場合、foreach だと自前でカウントする
必要があるが、while なら $. が使える。
・>>66 が言うように、while でやるよりメモリ消費が大きく、また
その確保に時間を食われるので重い。そしてどうせ全部読む
のなら、行入力演算子より read を使って以下のようにした方
が負荷は低い (但し特定の環境では極端に重くなるので注意) 。
read FH, my $buffer, -s FH;
for (split /\n/, $buffer) { ... }
以上から、while (<FH>) { ... } を使う場面で敢えて foreach を
選ぶ理由が無い。「とりあえず while 使っとけ」で困る事はまず
無いだろうが、「とりあえず foreach 使っとけ」では困った事が
沢山起こる。
006968
NGNGuse strict;
use Benchmark;
use vars '$File'; $File = './test.txt';
timethese(-5, {
for => sub {
open FH, $File or die $!;
for (<FH>) { my $line = $_ }
close FH;
},
split => sub {
open FH, $File or die $!;
read FH, my $buffer, -s FH;
for (split /\n/, $buffer) { my $line = $_ }
close FH;
},
while => sub {
open FH, $File or die $!;
while (<FH>) { my $line = $_ }
close FH;
},
});
0070デフォルトの名無しさん
NGNGfor: 6 wallclock secs ( 4.80 usr + 0.21 sys = 5.01 CPU) @ 3.99/s (n=20)
split: 5 wallclock secs ( 2.58 usr + 2.92 sys = 5.50 CPU) @ 1.64/s (n=9)
while: 6 wallclock secs ( 4.76 usr + 0.50 sys = 5.26 CPU) @ 12.17/s (n=64)
おー。
007143
NGNGBenchmark: running foreach, while for at least 1 CPU seconds...
foreach: 2 wallclock secs ( 1.70 usr + 0.00 sys = 1.70 CPU) @ 1.17/s (n=2)
(warning: too few iterations for a reliable count)
while: 1 wallclock secs ( 1.13 usr + 0.02 sys = 1.14 CPU) @ 2.63/s (n=3)
(warning: too few iterations for a reliable count)
use Benchmark;
timethese(-1,
{
while=>sub{
my @tmp;
open(IN,'test.txt');
while(<IN>){
unshift(@tmp,$_);
}
close(IN);
},
foreach=>sub{
my @tmp;
open(IN,'test.txt');
foreach(<IN>){
unshift(@tmp,$_);
}
close(IN);
},
}
);
気にせんとソース書いてたので勉強になった。
サンクス。
0072デフォルトの名無しさん
NGNG次は自演の勉強しようね
0074デフォルトの名無しさん
NGNGマシン:Pen 120 MHz、80 Mem (w
データ:32630 lines, 4617186 bytes
Benchmark: running for, split, while for at least 5 CPU seconds...
for: 8 wallclock secs ( 7.84 usr + 0.00 sys = 7.84 CPU) @ 0.25/s (n=2)
(warning: too few iterations for a reliable count)
split: 5 wallclock secs ( 5.07 usr + 0.00 sys = 5.07 CPU) @ 0.59/s (n=3)
(warning: too few iterations for a reliable count)
while: 5 wallclock secs ( 5.68 usr + 0.00 sys = 5.68 CPU) @ 0.70/s (n=4)
007574
NGNGメモリ負荷も少ないし、whileが一番いいということだと思う。
0076デフォルトの名無しさん
NGNG'A' と 'B' と 'C' の3文字、3桁で表せるのは9種類ですよね。
でも3桁「まで」となると 'AB' も1種類となって 3^3 + 3^2 + 3^1 に増えますよね。
こういうのも扱う時はどうしたらいいんでしょう。
空文字Dを追加して仮に4進数として /^D+/ にマッチするものだけをカウントとか思いついたんですが、
桁も文字種類も多く、重複除去が大変そうです。
あとは全部で1桁のループ→全部で2桁のループ…とかしかないのかなあ…。
いい案や、そういうのを追究しているサイトなどあれば教えていただけませんか。
Perlに限った話じゃなくてすみません。
0077デフォルトの名無しさん
NGNGお前は少し数学の勉強をした方が良いな
0078デフォルトの名無しさん
NGNGもう一度書き直してくれ。
あんたの課題と似ているが異なる課題も挙げて。
0079デフォルトの名無しさん
NGNG何がしたいんだ? マッチするものを探したいのか、組み合わせの数を数えたいのか
数学の前に日本語の勉強もすれ
008076
NGNGという感じです。
9の次を10じゃなくて00にすればいいのではという考えでした。
あと>>76の /^D+/ は /^D+[^D]+$/ でしたね。
0081デフォルトの名無しさん
NGNGそりゃ大抵の場合whileの方が高速だろうけど、
それよりむしろ少ないメモリで済むことが重要なんだから。
0082デフォルトの名無しさん
NGNGやっぱあんたダメだ。
スレが荒れるからよそに行ってくれ。
0083デフォルトの名無しさん
NGNGメモリに一気に取り込むメリットもあるんだが。
0084デフォルトの名無しさん
NGNG時と場合によりますね
終了
0085デフォルトの名無しさん
NGNG一発で読み込んだ方が早いやの、
一行づつ処理した方が早いやの・・・
そんな物、その時々の用法じゃないか。
whileでループさせた方が早いとか、
forでループさせた方が早いとか、
そんな事言ってるのと同じ。
ナンセンスな話し合いだな。おい。
0086デフォルトの名無しさん
NGNGましてや安定性も上がるならなお良し。
008776
NGNG008868
NGNGん?
「メモリを気にしなくていい(ファイルサイズ|環境)なら、while でも
foreach でも構わんだろ」という子に向けてのベンチなのだが…。
省メモリに済む while の利点は折込み済で、その上で速度的優位
が foreach にあるのなら「ケースバイケースでどちらかを選べ」って
話になるけど、今回のケースだと選択の余地が無い事を示したまで。
0089デフォルトの名無しさん
NGNGスレをもうちょっと前から読んでくれ、今本質的に重要なのはメモリ効率やらスピードではなくて
初心者にとりあえず教えるサンプルでなら foreach と while のどちらが適切かということだ。
それにも関わらず foreachをしつこく主張する奴が居るからベンチとか出してきてる人が居るだけ。
0090デフォルトの名無しさん
NGNG重複チェックならやはりハシュのご利用かな?
@Array = grep !$Hash{$_}++ , @Array;
0091デフォルトの名無しさん
NGNGサーバサイドのプログラム作るなら、
少ないメモリ量で処理するようにした方がよい。
自分んちのパソコンで動かすプログラム作るなら、
一行づつ読み込もうが、一発で全部読み込もうが、
一文字づつ読み込もうが、好きにすればいい。
foreachでも一行づつ読み込んで処理する事もできるし、
whileで一発で読み込む事もできる。
今までで話し合ってる事は・・・
i = 3+3+3+3+3;
と書くのが良いか、
i = 3*5;
と書くのが良いかってレベル。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG温かい目で見守ろう
009491
NGNGよし、具体例で反論してみろ。
0095デフォルトの名無しさん
NGNGmy ($s, $e) = ('a', 'c');# aからcまで使う
my $target = 'cccc';#調べるのは 'cccc'まで 'a', 'b','c' 'aa', 'ab'・・・の順で調べる
my ($n_s, $n_e) = map { ord($_) } ($s, $e);
my @num = ( $n_s );
my $number= pack "C*", reverse @num;
while( $number ne $target ){
$number= pack "C*", reverse @num;
#ここに必要な処理
print "$number\n";
my $keta_agari = 0;
my $i = 0;
do{
$num[ $i ]++;
if( $num[ $i ] > $n_e ){
$num[ $i ] = $n_s;
$keta_agari = 1;
$i++;
!defined $num[ $i ] and $num[ $i ] = $n_s - 1;
} else {
$keta_agari = 0;
}
} while $keta_agari;
}
#毎回reverseさせるのが不安だ。
0096デフォルトの名無しさん
NGNG> ・どこでそう習ったのか?
工業高校の生徒か?
> ・while(<>) で回しているサンプルを見た事があるか?
> ・もしあるのなら、それではなく foreach にした理由は何故か?
これくらいのコードを書くのに、サンプルを
見なければならないものか?
教科書でも見ながら書いているのかな。
> もしかして、なんか悪い本 or サイトがあるのか?
ラクダ本にも例がある。
自分の考えに合わないなら悪い本・サイトなのか?
しかしウザイな、こいつ。
自分のサイト、自分のサイトって、
どこのサイトの管理者かしらんが、
お前のサイトで解説してろ。
0097デフォルトの名無しさん
NGNGだから初心者にとりあえず教えるサンプルとして
どっちが適切なのかTMTOWTDIで思考停止していいのかという
話をしてるんだが。
> i = 3+3+3+3+3;
> と書くのが良いか、
> i = 3*5;
> と書くのが良いかってレベル。
5が100万になっても困らないほうを普通は教えると思うがね。
0098デフォルトの名無しさん
NGNG> 見なければならないものか?
これぐらいのコードを書くのにサンプル見なきゃ while(<>) すら
思いつけんのか?
> ラクダ本にも例がある。
何ページに foreach(<>) なんて載ってるんだ?
0099デフォルトの名無しさん
NGNG>工業高校の生徒か?
ワロタ。
>>97
イタタタ・・・
0100デフォルトの名無しさん
NGNGforeach(1..100000000) は最適化するのに foreach(<>) を最適化しないperlが悪い
0101デフォルトの名無しさん
NGNG$data = join('',<FH>);
ってかいてたから
read(FH,$data.-s FH);
なんてでてこなか〜ただよ。
0102デフォルトの名無しさん
NGNG池沼のための最適化はやらねえよ、って作者が言ってるだろうが。
0103デフォルトの名無しさん
NGNGhttp://groups.google.co.jp/groups?hl=ja&lr=&ie=UTF-8&c2coff=1&selm=1994Apr11.212926.14971%40wdl.loral.com
おおもとの発言はMIT発。
http://groups.google.co.jp/groups?hl=ja&lr=&ie=UTF-8&c2coff=1&selm=2obs1fINNivq%40life.ai.mit.edu
foreach (<>) { ... } はMITレベルと言ってもいいんじゃないか。
0104デフォルトの名無しさん
NGNG>>100が正にそれだな(w
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGお前神か?
何も知らずに foreach(<>) が書けるわけねぇだろ(w
0107デフォルトの名無しさん
NGNGperldelta
0108デフォルトの名無しさん
NGNGperl5005deltaに最適化されるようになったことは書いてありますが、
理由までは書いていないようです。
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG例えば
if($a['test']){
}else{
}
このような場合、$a['test']が0でもnullでも連想配列自体が定義されていなくても
同じ結果になりますよね。
色々調べていくうちにdefined関数が使えるんじゃないかと思ったのですが
違うようでした。
どなたか教えていただけないでしょうか。
0111デフォルトの名無しさん
NGNGexists
011215
NGNG0113デフォルトの名無しさん
NGNG($data) = <FH>;
こんなのもある
他によく知られてるとこでは $/ を undef ですかね
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq4.html#How_can_I_extract_just_the_uniqu
作業変数を作るのが嫌なら
@Array = sort keys %{ { map { $_, 1 } @Array } };
>>101
それこそ正に「ファイルが小さければ join で充分」な箇所だよ。
join '', <FH>; は何をしているのか分かり易いし書くのも楽。
ミクロな視点での最適化が必要なら read を選べばいい。
>>110
・配列や連想配列*自体*
my 変数なら use strict 'vars';
グローバル変数ならシンボルテーブルをチェック
・配列の要素数 / 連想配列のキーの有無
scalar @array; scalar %hash;
・配列の各要素 / 連想配列の各値
defined $array[$num]; defined $hash{$key};
・連想配列の各キー
exists $hash{$key};
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNGなんでだろうね。レベルは低くなって、態度はでかくなった。
0118デフォルトの名無しさん
NGNGPerlは簡単だから入門言語として勉強する人も多いだろうから。
レベルなんて上がるとは思えないし。
分かってくれば分かってくるほど、
Perlの無茶加減に気づいてきて、
違う言語へ移るだろうし。
でも、俺はPerlが好きだ。
0119デフォルトの名無しさん
NGNGわざわざここまで伸ばしてやったんだ。感謝しろよ。
0120デフォルトの名無しさん
NGNGメモリー使用量13M減ったよ。(汗
0121デフォルトの名無しさん
NGNGつーかforeach(1 .. 100000)が最適化されるのは
「for(my $i = 1; $i <= 100000; $i++)よりずっと書きやすいが、酷くメモリ効率が悪い」
ってのが理不尽だという意見が多かったんじゃないだろうか。
逆にforeach(<>)が最適化されないのはwhile(<>)と*完全に*置き換えられるからだろう。
0122デフォルトの名無しさん
NGNG@array = <> ならランダムアクセスができるという利点はあるがな。でも結局foreachの出番は無いわな。
0123デフォルトの名無しさん
NGNG> foreach(<>)がwhile(<>)に勝る点なんて何一つ無いね。
for(<>)と記述することで、2文字ぶん打ち込むのがラク。
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNGお前頭いいな
foreach(for)にも良い所があったって事でこの話題は終了しとこうぜ
0126デフォルトの名無しさん
NGNG結局 for にも負けて、 foreach には良い所ひとつもなかったって事か。終了。
0127デフォルトの名無しさん
NGNGお前らのせいだからな。
0128デフォルトの名無しさん
NGNGバカいうなよ。
forは左人差し指を2回使うがwhileはすべて違う指。
明らかにwhileのほうが打ち込むのラク。
0129デフォルトの名無しさん
NGNGおまいこそバカいうなよ。
同じ指を使うforのほうが圧倒的に打ち込むのラク。
0130デフォルトの名無しさん
NGNG右だけ破る→while
左だけ破る→for
ラベルを剥がして開く→foreach
0131デフォルトの名無しさん
NGNGIEにインポートする用のHTMLに変換したいのですが
解説サイトって無いですかね?
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG(1)ブラウザを立ち上げます
(2)アドレス欄をクリックします。
(3)http://www.goolgle.co.jp/を入力します
(4)"Operaのブックマーク(Hotlist)をIEにインポートする用のHTMLに変換"と入力する
(5)該当するページが見つかりませんでした。と表示されればOK。
0134デフォルトの名無しさん
NGNG(1)ブラウザを立ち上げます
(2)アドレス欄をクリックします。
(3)http://www.goolgle.co.jp/を入力します
(4)"opera bookmark perl"と入力する
(5)"OperaHotlist2HTML"のページを発見できれればOK。
(6)見つけたページの「ウサゲ」と書いてあるところをよく読む
(7)「STDIN」がわからない場合は(1)に戻る
0135デフォルトの名無しさん
NGNG(7)で戻るのは(1)じゃなくて(2)だと思います。
0136デフォルトの名無しさん
NGNG再び質問です。
>>51で同じファイル内のものはたとえ名前(ameなど)が同じでもアルファベットを
表示しないようにするには、どうしたらよいのでしょう。
0137デフォルトの名無しさん
NGNG自分で考えれ。
0138デフォルトの名無しさん
NGNG以下の様なsprintfを使用したスクリプトがエラーになります。
どなたか、Perlの環境は変えずに、以下のsprintfの代わりとなる
短いスクリプトがあれば教えて頂けませんか?
&SUB(sprintf "%02d", $a - 1);
sub SUB{
my $value = shift @_;
system "$SHELL_COMMAND $value";
}
0139デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGHP-UXのサーバなんですが、エラーメッセージを
今手元に控えていないのでお伝え出来ない状態です。
ちなみに、以下は正常に 04 と結果が表示されますが、
perl -e '$a = 5;printf "%02d", $a - 1;"
以下のスクリプトではエラーとなるので、sprintfが使用出来ない為?
だと考えています。
perl -e '$a = 5;$b = sprintf "%02d", $a - 1;'
0142デフォルトの名無しさん
NGNGWebProg と関係ないのでこっちで答えておく。
sprintf は Perl4 にもある。my 変数は無い。
http://flex.ee.uec.ac.jp/texi/perl/perl_toc.html
0144デフォルトの名無しさん
NGNGこれをコピペしてやってみたら?
perl -e '$a = 5; $b = sprintf("%02d", $a-1); print $b, "\n";'
っつのは、>>141は全角スペースやら入ってることが気になった。
0145デフォルトの名無しさん
NGNG通常のページは普通に取得できるけどgoogleでGET形式のURLになった場合のみ取得できない;;
Yahoo検索など他のGET形式の場合は取得OK。
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=%E3%81%BB%E3%81%92&lr=
以下環境
RedHatLinux 9.0
Perl 5.8.0
libwww-perl-5.800
Jcode-0.87
以下スクリプト
#!/usr/bin/perl
use LWP::Simple;
use Jcode;
($buf) = get('http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=%E3%81%BB%E3%81%92&lr=');
die "Couldn't get it!" unless defined $buf;
$buf = jcode($buf)->euc;
print $buf;
0147デフォルトの名無しさん
NGNGおいおい自分のパソコンにもPerlくらい入れろよ。
サーバで実験するってのはいやがられるよ。
0148デフォルトの名無しさん
NGNGgoogleは、メタ検索エンジンになるのを拒否します。
それは、googleのヘルプかなんかに書いてあります。
ユーザ登録してgoogleAPIというのを使えばできます。
webprog板にgoogleAPIというスレがあるけど。
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNGんー、普通のブラウザだとGETできるからUA名をIEなんかに偽装してみそ
LWPはデフォだとLWPだかってUA名を送るからそれで蹴られてるかも
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNGGoogleは連アタかけるとアク禁食らうのでちゃんと串かますこと。
昔会社でやってアク禁食らって、ごめんなさいメール出して解除
してもらったことがある。その後はちゃんと串刺してやってる。
0153デフォルトの名無しさん
NGNGPAR - Perl Archive Toolkit
JavaのJARのようなツールだが、exeも作成できる。
http://search.cpan.org/~autrijus/PAR-0.85/
0154デフォルトの名無しさん
NGNG>その後はちゃんと串刺してやってる。
ヲイ…
0155デフォルトの名無しさん
NGNG「ちゃんと」の用法がちゃうやろ。
そもそもアク禁されるほどの連アタにならないように「ちゃんと」接続を制御せな。
0156デフォルトの名無しさん
NGNGこんなのあるんですね。
でもこれってperl2exeと同じようなものですか?
0157デフォルトの名無しさん
NGNG貴重な意見<(_ _*)> アリガトォ
GET形式URLへはブラウザからだと取得できるので、
UA名を何かに変えてやってみまつ。
0158デフォルトの名無しさん
NGNGパッケージには触れない(パッケージ名を変えたりしないなど)方が
よいのでしょうか?
0159デフォルトの名無しさん
NGNG逆に、臭いからパックするという考えもアリ
0160デフォルトの名無しさん
NGNG臭いです。
0161デフォルトの名無しさん
NGNGWin32 GUI LoftのDemoは以下のようにコンソールよりGUIで起動できました。
C:\Perl\loft\Demo\FetchURL>perl Fetch.pl
(ppmでインストールした)PAR-0.75で以下のようにexe化を行いました。
C:\Perl\loft\Demo\FetchURL>pp --gui -a fetch.gld -o hoge.exe Fetch.pl
しかしhoge.exeを実行したときに
>par.exe - エントリ ポイントが見つかりません
>プロシージャ エントリ ポイント Perl_Gsv_placeholder_ptr がダイナミック リンク ライプラリ perl58.dll から見つかりませんでした。
と警告ダイアログが表示され実行されませんでした。
私には「何かインストールし忘れてるのかな」と感じただけなのですが、
どなたか解決方法のヒントをいただけないでしょうか。
今は(ppmでは手に入らない)PAR-0.85にアップグレードでどうにかならないかと、
Mkaefile.plやnmakeあたりの使い方を調べています。
Windows 2000
Perl 5.8.2
VC++ 有り
0162デフォルトの名無しさん
NGNG初めて知ったけど、Tkより楽ちんそうだね。
入れてみようかな。
0163デフォルトの名無しさん
NGNG91 1463.730149786665800 368.860556376834380 1094.869593409831400
165 1353.381577247856100 303.768416713978350 1049.613160533877600
こういった内容のファイルから入力しようとしているんですが、readだとバイト数が一定でないため使えません
どういったようにスペースで別れた数値を読み取れるようにできるんでしょうか?
0164デフォルトの名無しさん
NGNGPerlのキホンと思われ
これに枝葉ごてごてつければどうにでも応用が利く
0165デフォルトの名無しさん
NGNG@a=split(...)のかわりにpush(@a, $_) for split(...)というのは
はじめて見たな。どこの芸風だろうか?
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGヘンな記号みたいな特殊変数で、レコードセパレーターというか、
行(?)の区切りを設定する変数なかったっけ。
それをスペースにするっていうのはどうよ。
0168デフォルトの名無しさん
NGNGchompしてないところとかなんでもメモリに持ちたがるところとか
0169デフォルトの名無しさん
NGNG1行ずつ処理するんじゃなくて@aに全部ためるのが目的だったということですな。
0170デフォルトの名無しさん
NGNGsplitを使えばよかったのですね、ど素人質問に答えてくれてありがとうございますた。
0171デフォルトの名無しさん
NGNGサンプルデータを見るに、明らかに行指向だと思うんだが
全部ごちゃ混ぜにした後で切り分けんの?
0172デフォルトの名無しさん
NGNGべつにchompぐらいええやん。
0173デフォルトの名無しさん
NGNG>>168
べつにchompぐらいええやん。
0174デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG何故にchompいらないと思うのかね。
0178デフォルトの名無しさん
NGNG単なる初心者だろ
0179デフォルトの名無しさん
NGNG( ゚∀゚)彡 chomp! chomp!
⊂彡
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGびっくりするほどTMTOWTDI!
0182デフォルトの名無しさん
NGNGあのコードなら chomp いらねーよ
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGsplit /PATTERN/,EXPR,LIMIT
split /PATTERN/,EXPR
split /PATTERN/
split
Splits the string EXPR into a list of strings and returns that list.
By default, empty leading fields are preserved, and empty trailing ones are deleted.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0186デフォルトの名無しさん
NGNGそれは split によって空文字列のフィールドが生成された場合、
後ろのものは捨てられると言っているだけだ。
print map "[$_]\n", split /\t/ for (
"foo\tbar\tbaz\n", # foo, bar, baz\n
"\t\thoge\t\tfuga\t\t", # '', '', hoge, '', fuga
);
chomp が要らないのは split のパターンが /\s+/ なので改行も
デリミタとして扱われる為。パターンを /\s/ にすれば分かる。
print map "[$_]\n", split /\s+/ for (
"foo\tbar\tbaz\n", # foo, bar, baz
"\t\thoge\t\tfuga\t\t", # '', hoge, fuga
);
print map "[$_]\n", split /\s/ for (
"foo\tbar\tbaz\n", # foo, bar, baz
"\t\thoge\t\tfuga\t\t", # '', '', hoge, '', fuga
);
fail safe や fool proof の為、常に chomp を入れておくのは
悪い選択では無いが、chomp を省くとこういうつまらん部分で
ハマる事もあるのでお勧めできない。
0187デフォルトの名無しさん
NGNG>>17
0188172
NGNGやれいうなら tr/\x0D\x0A//d; 使っとくけど。
0189デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGご高説ご尤もということで(w
>163に関しては、\nの後の空フィールドは自動的にナイナイされるんだから
別にいいんじゃない?
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGお前以外に誰に言ってると思ってんの?
0194172
NGNGほ〜このコード自体はUnixでもMacでも窓でも使えるぞ。
ttp://www.din.or.jp/~ohzaki/perl.htm#CRLF_Remove
ココ読んでこいや。
0195デフォルトの名無しさん
NGNGああ。
それ自体はUNIXだろうがMacだろうが使えるだろうよ。
お前こそよく読め。
0197デフォルトの名無しさん
NGNG分からないならもういいよ。
Windowsしか使わないお前自分自身のためのソースなら問題ないしさ。
0198デフォルトの名無しさん
NGNG0199172
NGNG俺がいいたいのはここだ。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG依存して当たり前じゃねーか・・・
そもそも、UNIXで動くPerlはUNIX上で生成したテキストをUNIX上で処理するように作られてんだよ。
Windowsで作られたテキストをUNIXで処理するのをデフォルトなんかで作る訳ねーだろ・・・
わかるだろ?俺の言いたい事が。
0202デフォルトの名無しさん
NGNGchomp より >>188 の方が使いでがあるなあ。
0203172
NGNG別OSから持ってきたデータだとつかえんでしょ?
ソーなったとき仕様で使えませんとでも言うの?
0204202
NGNG「ソーいう仕様です」でまかり通るケースも多いでしょう。
0205デフォルトの名無しさん
NGNGバカ?
0206172
NGNG0207デフォルトの名無しさん
NGNGなんか、もういいや。
その時々の対処でって事で。
0208デフォルトの名無しさん
NGNG別にchompで問題なし。というか、chompでないと可読性下がるんでchomp推奨。
>>194のはいろんなプラットフォームのデータを処理するCGI向けコーディングの話だろ?
0209デフォルトの名無しさん
NGNGなんで回答者がOSに依存しないよう考慮しなければいけないんだ?
使い捨てスクリプトかもしれんのに。
0210172
NGNGあれこれ決めつける発言がウザかっただけだ。(w
0211デフォルトの名無しさん
NGNG>>163のバカ!って事でFA?
0212デフォルトの名無しさん
NGNG気が利いてるなと思う。
0213デフォルトの名無しさん
NGNG適当に削ってくれてる辺りが適当な作りっぽくていい味出してるな
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNGPerlスレに質問するってことは、Perlで処理しようと思ってるわけだろ。
正規表現でテキスト処理ってPerlの使い方の代表みたいに紹介されてると思うんだけど
そういうの全く見たり聞いたりしてないのかな
0217デフォルトの名無しさん
NGNG極端な例。
各フィールド内の改行表現は CR、レコード区切りは LF の CSV 。
binmode DAT;
print DAT (
qq/1,abc\x0Ddef,2,ghi\x0A/,
qq/3,jkl,4,mno\x0Dpqr\x0D\x0A/,
qq/\x0Dstu,5,6,7\x0A/,
);
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNGそれを「テキスト」と言えるかは微妙。それこそ適材適所だべ。
0220デフォルトの名無しさん
NGNGセル内改行はLFになるよね。
行の区切りはCR LFで。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG個人的には、whileだchompだと云うぐらいなら
てめぇが即レス回答しろや、ボケッ!とか思っちゃうが。
0223デフォルトの名無しさん
NGNGCSVはバイナリファイルだと?
0224デフォルトの名無しさん
NGNGいやまぁ微妙だから「極端な例」なんだけどね。
少なくとも while (<>) { chomp; ... という慣用句なら
問題なく処理できるけど。
あと見落とされがちだが chomp は $/ と連動してるので、
陽に $/ を設定すれば行末で悩む必要は無い。
local $/ = '0';
chomp, print "[$_]" while <DATA>;
__DATA__
102030405060708090
0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNG再び質問です。
>>51で同じファイル内のものはたとえ名前(ameなど)が同じでもアルファベットを
表示しないようにするには、どうしたらよいのでしょう。
0227デフォルトの名無しさん
NGNGちょっとは自分で考えてるんか?
0228デフォルトの名無しさん
NGNG妙ちくりんなコードはいったい何なんだ?
どっかに発生源があるんか?
アホウが書いた本がなぜか売れてるとか。
0229デフォルトの名無しさん
NGNGwhile(<>){
s/\s+$//;
}
みたいに書いてる。
0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNGいくら考えてもわかりません。
>>18で同じファイル内のものはたとえ名前(ameなど)が同じでもアルファベットを
表示しないようにするには、どうしたらよいのでしょう。
あまり聞きすぎるのも悪いので。
perlの基本的なことは勉強したのですが、まだ慣れていないようです。
プログラムの例が豊富にのっているようなホームページはないのでしょうか?
0232デフォルトの名無しさん
NGNG>>3
0233デフォルトの名無しさん
NGNGおまえCSVファイルって何のことか分かってて言ってる?
0234デフォルトの名無しさん
NGNGPerlの勉強よりアルゴリズムの勉強が必要だと思う
手順を論理的に考える能力が足らないんじゃないのかな
0235デフォルトの名無しさん
NGNGで、foo bar ahoを文字列のリストとして取得するのはどうやるんでしょうか。
my $input = $_;はできても
my @inputs = @_;はできないですよね。
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNGカンマ区切りテキスト
0238デフォルトの名無しさん
NGNGthx
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGWin32モジュール使えばいいんですか?
0242161
NGNG根本的な解決方法かどうかはわかりませんがPARのアップグレードを試みたので状況報告です。
(PAR-0.85の)makefile.plを実行してmissingと出たものをppmで追加し、全てloadedと表示されるようにしました。
しかし、Fetching 'PAR-0.85-MSWin32-x86-multi-thread-5.8.2.par' に失敗し、'script/parl.exe'の生成にも失敗しました。
そこで独自にparファイルをダウンロードしたのですが、@INCやMakefile.plと同じディレクトリに置いてもそれを使ってくれません。
parファイルを解凍しての手動インストールは難しそうなので断念しました。
0243デフォルトの名無しさん
NGNGs/\x0d\x0a?$//;
にしてる。
0244デフォルトの名無しさん
NGNGttp://www.bribes.org/perl/ppmdir.html は見たのか?
0245デフォルトの名無しさん
NGNG私も同じようなエラーが出たので
ttp://aut.dyndns.org/par/
から使っているPerlのバージョンにあう
PAR-0.XX-*.parをダウンロードして
手動でインストールした所、エラーが出なくなりました。
(Win2K Perl 5.8.3)
でも、結局、
PAR-0.85はエラーが出てインストールできなかったので、
もしかしたらPerlを最新バージョンにアップするとうまくいくかもしれません。
0246161
NGNG---
>>245 回答ありがとうございます。
今Perlを5.8.2->5.8.4にバージョンアップさせました。
>>244 回答ありがとうございます。
そのサイトは見ていませんでした。
コンパイル済みPARの配布を行っているんですね。
・Perlのバージョンアップ
・ttp://www.bribes.org/perl/ppm/PAR.ppd からインストール
両方行ったところ「pp --gui -a test.gld -o test.exe test.pl」で実行ファイルを作成でき、起動も無事行えました。
具体的な原因は判らなかったもののこれが過去ログとなった時に役立てば幸いです。
本当にありがとうございました・゚・(ノД`)・゚・
0247デフォルトの名無しさん
NGNG情報Thx.
0248デフォルトの名無しさん
NGNGMac 使い?
0249243
NGNG0250デフォルトの名無しさん
NGNGchomp使わないで、
そうする利点がわかってんなら、
それでいいんじゃない。
あーっそって感じ。
0251デフォルトの名無しさん
NGNG0252243
NGNG0253デフォルトの名無しさん
NGNG勘弁してくれよ。
終わった話を得意気に持ってくるヤツに、
あっそ。と言ってあげたまでの話。
お前には、はいはい。と言ってあげよう。
0254デフォルトの名無しさん
NGNG取敢えず、駄目ならソース出せということで。
0255デフォルトの名無しさん
NGNG>b0005 gtgaaaaagatgcaatct
>yaaA atgctgattcttatttca
>Zaw atgaggttggccccccca
...
>Z0005 gtgaaaaagatgcaatct
>yaaA atgctgattcttatttca
>Eae atgagagagagccgagccgag
...
を
gtgaaaaagatgcaatct b0005 Z0005
atgctgattcttatttca yaaA yaaA
...
と表示させる方法を教えてください。
(二つのファイルを比較して、塩基配列(右の部分)が等しいものの名前を表示する。
同じファイル内では等しくても表示しません。)
自分は塩基配列をそれぞれ変数にして等しい時表示すると書きたかったのですができませんでした。
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNGopen A, "file-a.txt" or die;
while(<A>){
my ($tag, $enki) = split;
$enkis{$enki} ||= [$tag];
}
close A;
open B, "file-b.txt" or die;
while(<B>){
my($tag, $enki) = split:
unless($enkis{$enki}){
$enkis{$enki} = [$tag];
}else{
push $enkis{$enki}, $tag;
}
close B;
print qq/$_ @$enkis{$_}\n/ foreach (keys %enkis);
0258デフォルトの名無しさん
NGNG>>255は、自分が分かっているんだから相手もわかる。
相手が理解しやすいよう伝えようとは考えない。
この辺で、自己中心的な部分があります。
また、こういう考えをする人は頭の良い人に多いように思います。
また、他人が自分に力を貸すのは当たり前。
そういう思想の持ち主のように思います。
また、物を例えて表現するのが苦手に思います。
これは逆に、例えた物を置き換えて理解するのが苦手に繋がります。
たとえば、ライターの火は危ないよ、と教えてもらっても、
「ライターの火は危ない」とだけ学習し、コンロの火も危ないとは学習しません。
「火は危ない」そう学習するのが苦手に思います。
こういう人は、人とのコミュニケーションが苦手で、
自分を表現するのが下手な奥手な人。
以外な所で知的で、内面は大胆不敵。
しかし、外には出さない。
煽りっぽくなりましたが、正直なあなたの印象です。
たとえ、ここで答えを聞いても、
応用し、違う局面で生かす事ができないと思うのであります。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG質問者のレベルも下がってしまった。
0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNG落ち着くんだ!(# =ΦωΦ=)フーフー…!!
0265デフォルトの名無しさん
NGNG図星を指されてむかついた時は、もっと文章を捻ろう。
定型文に依存すると、真っ赤な顔したDQNってバレちゃうぞ☆
0266デフォルトの名無しさん
NGNGPerlで次のようなHTTPクライアントプログラムを作ったのですが、
iswebのcgiを取得しようとすると、どうしても403になってしまいます。
何か解決策知ってる方いませんでしょうか?
#!/usr/bin/perl
use Socket;
$u = "http://nekyo.hp.infoseek.co.jp/cgi-bin/wiki/wiki.cgi";
if($u =~ m|^http://([-_\.a-zA-Z0-9]+)/?(.*)$| ){
$host = $1; $port = getservbyname('http', 'tcp'); $path = $2;
}elsif($u =~ m|^http://([-_\.a-zA-Z0-9]+):([0-9]+)/?(.*)$| ){
$host = $1; $port = $2; $path = $3;
}
$iaddr = inet_aton($host) || die 'err';
$sock_addr = pack_sockaddr_in($port, $iaddr) || die 'err';
socket(SOCKET, PF_INET, SOCK_STREAM, 0) || die 'err';
connect(SOCKET, $sock_addr) || die 'err';
select(SOCKET); $|=1; select(STDOUT);
print SOCKET "GET $u HTTP/1.0\r\n";
print SOCKET "Referer: $u\r\n";
print SOCKET "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)\r\n";
print SOCKET "Host: $host:$port\r\n\r\n";
while(<SOCKET>){ print; m/^\r\n$/ && last; }
while(<SOCKET>){ print; }
0267デフォルトの名無しさん
NGNG顔を真っ赤にする奴がいるんだろうか。
0268デフォルトの名無しさん
NGNGLWP使えって。
0269デフォルトの名無しさん
NGNGGET /cgi-bin/wiki/wiki.cgi HTTP/1.0
っとするべきところが
GET http://nekyo.hp.infoseek.co.jp/cgi-bin/wiki/wiki.cgi HTTP/1.0
となったるだーよ
0270263
NGNG0271デフォルトの名無しさん
NGNG0272263
NGNG0273デフォルトの名無しさん
NGNG0274263
NGNG0275デフォルトの名無しさん
NGNGありがとう!できました!
0276デフォルトの名無しさん
NGNGマルチコアプロセッサ対応版のperl、みたいなのはあるんでしょうか。
0277デフォルトの名無しさん
NGNGブラウザを閉じたら閉ループから抜け、プロセスを終了させる方法とかりますでしょう
か?
監視処理的な事をやらせたいので、
閉ループとsleepとを使って行なわせてるのですが、
ブラウザを閉じてもプロセスが動きっぱなしになるので、
タスクマネージャーでいちいち終了させるのが、
面倒でありまして。
0280デフォルトの名無しさん
NGNGHTML、reloadでぐぐるぐらいのことが出来なくてどうする。
それにもうPerlの話じゃないし、初心者だという開き直りも印象が悪い。
出直して来い。
0281デフォルトの名無しさん
NGNGOSもわからんし監視処理「的」ってのも意味不明だけど
forkしてexecして親からpid監視すりゃいいンじゃないの?
って既に他所で開いてあるブラウザを監視したいとかいう話だったら
もう知らんけど。
0282デフォルトの名無しさん
NGNGおすすめは何ですか?
ついでに手術してくれる病院も
紹介してもらえるとありがたいのですが。
0283デフォルトの名無しさん
NGNG自分でBB弾でも詰めとけよ
0284デフォルトの名無しさん
NGNG悪い事言わないから。
真珠を埋める手術受ける前に、
真性包茎の手術を受けろ。
な?
0285デフォルトの名無しさん
NGNGmod_perlみたいなのを使った場合は知らんけど、
普通cgiはブラウザ〜で読みだしたときの状態を見るものだとおもわれ。
よってブラウザリロードをしてとりこむ。->鯖のプロセス自体はその都度終了。
監視処理とやらは常駐処理になるだろうから別プログラムにせにゃならん筈。
0286デフォルトの名無しさん
NGNG$conn = 'Provider=Microsoft.Jet.OLEDB4.0;';
$conn .= 'DataSource=test.mdb;';
$db = Win32::OLE->new('ADODB.Connection');
$db -> Open($conn);
$rs = $db->Execute("SELECT * FROM [TEST];");
while (!$rs->EOF) {
print $rs->Fields('ID')->Value;
$rs->MoveNext;
}
$rs->Close;
$db->Close;
----------------
while (!$rs-EOF) { の行でエラー
Can't call Method "EOF" on an undefilned value text.cgi line xx.
今まで動いてた物が急に動かなくなりました。
原因又は、原因の突き止め方を教えてください。
Win2k-Server, IIS ,ActivePerl v5.8.4 ,Access2000
0287デフォルトの名無しさん
NGNG学校で聞いたらXPだと入ってると言われたんですが・・・
馬鹿な質問すいません
0288デフォルトの名無しさん
NGNGそれどこの学校だよw
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNG287 「先生、学校のパソでもパールとかできるんすか?」
クソ先公 「(あ?実習室にはXP機があるし、図書館にはiMacがあるが、どっちの事だ?
XP機には漏れが Perl をインスコしておいたが……)
おう、Perl なんかよく知ってたな。どこで使いたいよ?」
287 「あー、実習室のパソで……」
クソ 「あそこなら使えるぞ。自由に使え」
287 「押忍! アリガトッシタ!」
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG多分それビンゴ
0293デフォルトの名無しさん
NGNGXP以外に98やらMeやらMacやらLinuxやらが入ってるPCがあり、
XP(が入ってるPC)にはPerl(インストールしておいたから)入ってるよ。
の説明を受けたのをXPには最初から入ってる物と勘違いしたに1000カノッサ
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG$db->Executeの戻り値がundefだから。
どういう条件でundefが返るのかは自分で調べてちょ。
(テーブルがなくなったとか、あるいはファイルに接続できなくなったとか、排他制御とか、いろいろ想像できるけど)
0296デフォルトの名無しさん
NGNGC:\Documents and Settings\masayuki>ppm
Error: neither 'HKEY_LOCAL_MACHINE/SOFTWARE/ActiveState/PPM//InstallLocation' no
r 'HKEY_CURRENT_USER/SOFTWARE/ActiveState/PPM//InstallLocation' found in registr
y at E:\www\usr\bin\ppm.bat line 29.
なんて言われてしまったんですが、どうしたらいいんでしょう?
ちなみにパールはE:\usr\local\binにインストールしてあるのですが・・・
Windows XP
ActivePerl 5.8.1 Build 807
です。誰かアドバイスよろしくお願いします。
0297デフォルトの名無しさん
NGNGXPだってさ
0298デフォルトの名無しさん
NGNGそれがどうかしましたか?
0299デフォルトの名無しさん
NGNG再インスコ
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGボーダフォンの絵文字変換の部分らしき部分の抜粋です
else {
$str =~ s/(\d\d\d\d\d);/<img src=\"$ImodeEmojiDir$1\.png\" border=0 width=12 height=12>/g;
if ($str =~ /\x1B\$/) {
$str .= "\x0F";
1 while ($str =~ s/(\x1B\$[\45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)(\x0F)/$1$2$4$1$3$4/g);
$str =~ s/\x1B\$([\45-\x47\x4F-\x51][\x21-\x7A])\x0F/'<img src="' . $JskyEmojiDir . unpack('n',$1) . '.gif" border=0 width=12 height=12>'/eg;
$str =~ s/\x0F$//; }
「Unicode E539」「ウェブコード $QY」が「20513.gif」と変換されます。
ttp://www.dp.j-phone.com/dp/tool_dl/web/picword_06.php
順序良く並んでいれば連番で問題ないのですが、変換されると番号が飛びメチャクチャになります。
何か良い方法は無いでしょうか?
0302301
NGNG←と※は半角(?)で、※の部分は小さすぎて見えませんでしたので推測です。
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNG>$str =~ s/\x1B\$([\45-\x47\x4F-\x51][\x21-\x7A])\x0F/'<img src="' . $JskyEmojiDir . unpack('n',$1) . '.gif" border=0 width=12 height=12>'/eg;
>$str =~ s/\x0F$//; }
とりあえず、whileの中の置換gオプションは間違いじゃかと。
あと1、2行目の文字クラスで\45もおかしいよね。。。
0306デフォルトの名無しさん
NGNG仕事ではありません、まぁ甘いと言われても仕方ありませんが
>>304
全文でもいいのですが、サブルーチンなので意味が無いかと思いまして
>>305
出来ればおかしい部分を、助言して頂けませんでしょうか?
助言が得られなければ、違約金覚悟で契約してきますが..貧乏なもんで
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG\45は\x45の間違いだろう。そこ直してみれば?
gはなくてもいいけどあってもいいはず。
しかし「変換されると番号がとびめちゃくちゃ」と
いわれてもなにがなんだかさっぱりわかんない。
具体的に例をあげて、これを変換したらこうなった
けど自分はこうなることを期待しているというのを
はっきり書かないと。
0309デフォルトの名無しさん
NGNGとなって
$str =~ s/\x1B\$([ry][ry])\x0F/ry . unpack('n',$1) . ry'/eg;
だから
画像ファイル名の決定には1度目の置換の $1$2$4 までしか使ってないし、なんで妙な挿入になってんのかも謎
0310305
NGNG1 while (s/(<)(\w)(\w+)(>)/$1$2$4$1$3$4/g);
print ;#$_ = <b><c><d><d><f><f><f><f>で表示
gオプションは正しいってことで。上の例場合、
<>内に2文字以上あったら1文字になるまで置換しつくすってことで。
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGドキュメントくらい読めよ。またはpp --helpとかさ。
pp --icon=myicon.ico script.pl
0313デフォルトの名無しさん
NGNGあのコード片じゃそこまでややこしく画像ファイル名を作る理由がワカランからもうこのネタはお終いじゃ
0314デフォルトの名無しさん
NGNG文字コードに対応した絵文字の画像ファイルがあらかじめ
用意してあるんじゃないかと思われ。
0315デフォルトの名無しさん
NGNGリンク先のHTMLソース解析して、ハッシュにでも突っ込むのが一番早いと思われ
0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNG-ep は -e "p" とするのと同じ意味になる。
-e は後ろに引数を取るオプションだから、後ろに変なの続けちゃダメでしょ。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGmkdirで新規ディレクトリを作成し、そのディレクトリに新規ファイルを作成する事までは出来たのですが
そのファイルのパーミッションを変えることが出来ません。。
chmodでも変わらないのですが、何かいい方法ないでしょうか?
よろしくお願いします
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG一応777にしてますです
0324デフォルトの名無しさん
NGNGゼロだった場合は $! を表示。で分かるかも知れず分からぬかも知れず。
つうか書き捨てのスクリプトはともかく、なにかちゃんとしたものを
作ってるんだったら外部に作用する関数(ファイル操作とかDBとか)
を呼ぶときは必ず失敗か成功かチェックするコードを入れる癖をつけるべし。
0325perlマン
NGNGどのようにしたら 一番大きな変数表示が出来るperl スクリプトができるでしょうか?
0326デフォルトの名無しさん
NGNG$a = 1;
$b = 2;
$c = 3;
print "a がデケエ" if($a > $b && $a > $c);
print "b がデケエ" if($b > $a && $b > $c);
print "c がデケエ" if($c > $a && $c > $b);
0327デフォルトの名無しさん
NGNG$user = 'aaa';
$passwd = 'bbb';
$db = DBI->connect('DBI:mysql:localhost',$user,$passwd);
$sth = $db->prepare("SELECT * FROM hoge");
これ実行するとInternal Server Errorになるのですが
最後の$sthの行を消すとエラーはでないのです
なぜでしょうか?
0328デフォルトの名無しさん
NGNG等号も入れたほうがいいかも知れない
>327
$sth = $db->prepare("SELECT * FROM hoge;");
だと思われ
0329デフォルトの名無しさん
NGNGエラーログ見ろよ。Internal Server Errorになったときの基本だ。
0330デフォルトの名無しさん
NGNGなるほど!
と思ったけどそれでも無理でした。。
0331デフォルトの名無しさん
NGNGエラーログ見ろよ。Internal Server Errorになったときの基本だ。
0332デフォルトの名無しさん
NGNG今日はじめてなもので もう少し勉強してからきます
0333デフォルトの名無しさん
NGNGそんなに見たくないもんなのだろうか。
0334デフォルトの名無しさん
NGNGが使えるかどうかってどうやってわかりますか?
借りてるレンタルサーバーで使えるかわからないので
よろしくおねがいします。
0335デフォルトの名無しさん
NGNGCGIじゃないってんならコマンドラインから叩きゃエラー出るだろ
0336デフォルトの名無しさん
NGNG>>257の方に答えていただいたのですが、うまく動きません。
少しだけ自分で直しましたが、まだどうして動かないのかが
わかりません。どなたかよろしくお願いします。
以下問題のプログラム
my %enkis;
open A, "file-a.txt" or die;
while(<A>){
my ($tag, $enki) = split;
$enkis{$enki} ||= [$tag];
}
close A;
open B, "file-b.txt" or die;
while(<B>){
my($tag, $enki) = split;
unless($enkis{$enki}){
$enkis{$enki} = [$tag];
}else{
push @{$enkis{$enki}}, $tag;
}
close B;
print qq/$_ @$enkis{$_}\n/ foreach (keys %enkis);
0337デフォルトの名無しさん
NGNG最後の行の@$enkis{$_}→@{$enkis{$_}}だと思う。
前者はスカラー変数$enkisに格納されたハッシュへのリファレンスを
デリファレンスして、$_に対応する値ひとつからなるスライスをとった
ことになってしまう。
欲しいのは%enkisハッシュのキー$_に対応する値の配列リファレンスを
デリファレンスした配列だろう。
あとは、いきなりpushしても大丈夫なのでunlessのあたりは冗長。
そのままでも動きますが。
0338デフォルトの名無しさん
NGNG>>337のように直したら、きちんとprint されましたが、結果がおかしい
ものになっていました。
原因を考えようと、二つのファイルの形式を見直したところ、使うファイルは、
>遺伝子名(b0005とか) 塩基配列(atgatgcgとか)
というデータが羅列されているのですが、
ファイル1
>b0005 gtgaaaaagatgcaatct
>cat gatagtcgacccaggtcccga
>yaaA atgctgattcttatttca
>Zaw atgaggttggccccccca
...
ファイル2
>Z0005 gtgaaaaagatgcaatct
>yaaA atgctgattcttatttca
>Eae atgagagagagccgagccgag
...
のyaaAのように、比較するものが必ずしも同じ行でないことが原因ではないかと
思いました。
0339デフォルトの名無しさん
NGNGまた、もう一つの問題として、
ファイル1
>H0005 gtgaaaaagatgcaatct
>cear gtgaaaaagatgcaatct
>
...
ファイル2
>N0005 gtgaaaaagatgcaatct
>cear gtgaaaaagatgcaatct
...
のように同じ塩基配列のものが複数ある場合があったのですが、この時は
「遺伝子名で同じものがない時は、適当に遺伝子名のペアをつくり、
塩基配列 ファイル1の方の遺伝子名 ファイル2の方の遺伝子名
と出力し、上の例のcearのように、遺伝子名で同じものがある時は、
それを優先的にペアにして出力(つまり、
gtgaaaaagatgcaatct H0005 N0005
gtgaaaaagatgcaatct cear cear
のように出力)する」にはどのようなプログラムを書いたらよいのでしょうか。
*同じファイル内だけで同じ塩基配列の遺伝子があってもそれは表示しません。
言葉足らずですみませんが、どなたか方針だけでも教えてください。
0340デフォルトの名無しさん
NGNGびっくりするほどDNA
0341デフォルトの名無しさん
NGNG方針:
http://www.amazon.co.jp/exec/obidos/ASIN/4873111269/
http://www.amazon.co.jp/exec/obidos/ASIN/487311103X/
今すぐこの2冊を買って読む
0342デフォルトの名無しさん
NGNG初めてのPerl読んだほうが手っ取り早いような気がする。
きちんと考えずに書くけど、ハッシュと正規表現が身についてれば
どうにでも料理できるンじゃないのかな、この手の問題は。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNGお約束っつーか、それを言うのはただの嫌な奴だな。
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGPerlで作ろうとするのよりはいくらかマシ。
0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG(パターンマッチに日本語を使用)
5.8以降は日本語に対応しているとのことですが、Activeで日本語を使うには
別に設定が必要なのでしょうか?
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNGuse utf8;
0353デフォルトの名無しさん
NGNGuse encoding 'shiftjis';
0354デフォルトの名無しさん
NGNGhttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0355デフォルトの名無しさん
NGNGテキストファイルに1行ずつ、複数のSQL命令文を記述しておき、それをopen関数を使って
実行したいのですが、上手くできません。PERLでは↓の様に記述しています。
open (FH, "/usr/bin/psql -h 0.0.0.0 -p 5432 -U user -n database < SQL.txt |");
(0.0.0.0はIPです)
これを実行すると、テキストファイルの1行目のみが実行されて、残りの命令文は無視されてしまいます。
しかし、コマンドラインから直接/usr/bin/psql -h 0.0.0.0 -p 5432 -U user -n database < SQL.txt
を実行すると、全ての命令文が実行されて上手くいきます。
何とかperlのプログラム中で実行したいと思っているのですが、対策がわかりません。
どなたか御存じの方おられませんか?
0356デフォルトの名無しさん
NGNGsystem "/usr/bin/psql -h 0.0.0.0 -p 5432 -U user -n database < SQL.txt |";
?
0357355
NGNG/usr/bin/psql -h 0.0.0.0 -p 5432 -U user -n database < SQL.txt
説明不足でした、すいません。
学校の中で実行していましたので、「-h 0.0.0.0 -p 5432 -U user」はローカルマシンにアクセスするための
オプションです。open関数でローカルマシンのpsql(SQLインターフェース)を呼び出して、「< SQL.txt」で
テキストファイルを読み込ませています。
openで実行する場合とコマンドラインで直接実行する時に違いが出てしまうので困っています。
0358Rubysaikou!!!!
NGNG0360デフォルトの名無しさん
NGNGいやあのパイプは必要なの?@open
結果を必要としないのならsystem関数で実行してみては?という意味なのですが。
でもって、
> system "/usr/bin/psql -h 0.0.0.0 -p 5432 -U user -n database < SQL.txt |";
system "/usr/bin/psql -h 0.0.0.0 -p 5432 -U user -n database < SQL.txt";
ですたm(_ _)m
結果が欲しいのなら、
my $Response = qx {/usr/bin/psql -h 0.0.0.0 -p 5432 -U user -n database < SQL.txt};
とか。。。
もしかして、こうしたいのだろうか?
local (*TXT, *PIPE_SQL);
open TXT, 'SQL.txt' or die $!;
my $In-queries = join'', <TXT>;
close TXT;
my $sql_command = '/usr/bin/psql';
my $options = '-h 0.0.0.0 -p 5432 -U user -n database';
open PIPE_SQL, "| $sql_command $options" or die $!;
print PIPE_SQL $In-queries;
close PIPE_SQL;
0361355
NGNGすいません、パイプは要りませんでした(−_−;)
それとおっしゃる通り、system関数を使ってみたらアッサリと出来てしまいました。
かなり感動しました。
それにしてもopenだとなぜ1行目のみで終了してしまうのでしょうか・・・・・。
もう少し調べてみます。
本当にありがとうございました>>360
0362デフォルトの名無しさん
NGNGrequire './jcode.pl';
みたいなのが在っても自動的に入らないんですけど、
jcode.plを入れるオプション教えて下さい
0363デフォルトの名無しさん
NGNG2にgoogle
3,4が無くて
5に2ちゃん
0364デフォルトの名無しさん
NGNGひょっとしてopenしてるだけで読んでないとか?
それだとpsqlの出力がブロックしちまうんじゃないかと...
0365355
NGNGどうもopenして1行目は読んでるようなんですよ。ただ、1行目の命令文を実行した(psqlが1行目を処理完了)
時点で終了してしまっている感じです。systemだと問題なかったのですが・・・・。
0366デフォルトの名無しさん
NGNGopen FH,〜でパイプをopenしたあと、psqlの出力をファイルハンドルFHから
perl側で読み出してるかって意味です。psqlがSQL.txtを読んでるかという
意味ではありません。
0367デフォルトの名無しさん
NGNG複数のファイルを読み書きする場合でも
$lockfileは./lock/test.lockの1つだけでいいんでしょうか?
1:ファイルロック
2:ファイル1をオープン
3:ファイル1のデータの取り出し
4:ファイル1をクローズ
5:ファイル1を書き込みでオープン
6:ファイル1に書き込む
7:ファイル1をクローズ
8:ファイル2をオープン
9:ファイル2のデータの取り出し
10:ファイル2をクローズ
11:ファイル2を書き込みでオープン
12:ファイル2に書き込む
13:ファイル2をクローズ
14ファイルロック解除
こんな感じじゃダメですか?
だめならどこがだめなんでしょうか?
0368デフォルトの名無しさん
NGNG1と14のロックは、2〜13の処理(クリティカルセクション)を排他するためのものと
理解すべし。つまり、それでOK
0369デフォルトの名無しさん
NGNGありがとうございます。
use encoding 'shiftjis';
によりActive5.8は日本語対応してくれるようになりました。
ところが・・・
何故か途端にファイル入力が出来なくなりました。
ファイルの読み込みの段階で失敗してしまいます。
ソースそのものはJperlで動作確認済みです。
Activeの場合はまだ、設定が必要なのでしょうか?
0370デフォルトの名無しさん
NGNGぶっちゃけよほど簡単なソースでないかぎり、Jperlで書いてたような
Native-ShiftJisとも呼べるようなソースは今のPerlではそのままは動かんです。
結局大抵の場合は、エンコード変換の記述( decode〜 encode〜 )
が必要となると思いますよ。
むしろencoding モジュールはおまじないでもなんでもなく、utfフラグを
着けたり消したりする作業を肩代わりするだけなので、
『自分のコードがshiftjisで読み込んでいるものもshiftjisだからこれで一致するだろう』
とか言う場合に、encodingで指定していると、全く一致しなくなるので、余計に混乱するかも。
0371デフォルトの名無しさん
NGNG>>350に「(パターンマッチに日本語を使用)」と書いているが、
SJISのコード配列を前提にしたものが混じってない?
例えば、 「漢字」にマッチさせようとして[亜-�K]など使ってない?
ファイル形式は SJIS でも UTF-8 に変換して処理するから、
これでは動かないよ。
0372371
NGNGあっそうか。
> ファイルの読み込みの段階で失敗してしまいます。
ということだったね。ソースを分割/単純化していって、
どの行で障害が起こっているのか特定してみてよ。
その行を示せば有効なアドバイスがもらえるだろう。
0373デフォルトの名無しさん
NGNGuse encoding 〜はスクリプトおよびSTDIN,STDOUTについては
面倒見てくれるけど他は何もしてくれないはず。
ファイルからutf8以外の文字コードで読みたければ、use open
であらかじめデフォルトを決めとくか、openのときに明示する
必要がある。
0374デフォルトの名無しさん
NGNGCPAN.pm: Going to build P/PS/PSME/Win32-Screenshot-1.20.tar.gz
-- OK
Running make test
'test' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
test -- NOT OK
Running make install
make test had returned bad status, won't install without force
とか出て止まりました。どうすればよいのでしょうか。5.8です
0375デフォルトの名無しさん
NGNGファイル名が日本語だったりすると駄目っスよ?
>>374
nmake.exeが入ってないっしょ。
0376デフォルトの名無しさん
NGNG0377374
NGNGコマンドプロンプトからnmakeと打つと
Microsoft (R) Program Maintenance Utility Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.
とか出ます。
0378デフォルトの名無しさん
NGNGってリストを返すんですよね?
@a=`ls`;
print $#a;
で行数を得れますが、一時変数@aを使わずに
1行でうまく書けませんか?
0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNGwc
0381_gunzip
NGNG0382デフォルトの名無しさん
NGNGサンクスです。
0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNGcpanのシェルで
cpan> o conf
の結果は?
makeのトコ空欄になってたりしない?
0385374
NGNG後コンパイラって何を使用すればいいのでしたっけ?
有料のは使えません…
0386デフォルトの名無しさん
NGNG君の場合あきらめてCygwin使うかVineLinuxでも入れた方が早いよ
0387デフォルトの名無しさん
NGNGcpan> o conf nmake
とかすれば設定されるでしょ?
これ以上はcpanのドキュメント読んでちょーよ。
0388374
NGNGNote (probably harmless): No library found for oldnames.lib
Note (probably harmless): No library found for kernel32.lib
Note (probably harmless): No library found for user32.lib
Note (probably harmless): No library found for gdi32.lib
Note (probably harmless): No library found for winspool.lib
Note (probably harmless): No library found for comdlg32.lib
Note (probably harmless): No library found for advapi32.lib
Note (probably harmless): No library found for shell32.lib
Note (probably harmless): No library found for ole32.lib
Note (probably harmless): No library found for oleaut32.lib
Note (probably harmless): No library found for netapi32.lib
Note (probably harmless): No library found for uuid.lib
Note (probably harmless): No library found for wsock32.lib
Note (probably harmless): No library found for mpr.lib
Note (probably harmless): No library found for winmm.lib
Note (probably harmless): No library found for version.lib
Note (probably harmless): No library found for odbc32.lib
Note (probably harmless): No library found for odbccp32.lib
Note (probably harmless): No library found for msvcrt.lib
やっぱり有料のVC++とか入れなければダメなんですかねぇ..
0389デフォルトの名無しさん
NGNG君の場合あきらめてCygwin使うかVineLinuxでも入れた方が早いよ
0390デフォルトの名無しさん
NGNGfile1.txt
山田 太郎 国語 75点 数学 80点
岩鬼 正美 国語 80点 数学 60点
file2.txt
山田 サチ子 国語 90点 数学 55点
里中 智 国語 85点 数学 23点
ってなファイルがあるときに
国語の点数でソートかけるのどうしたらいいの?
わからないところは
@file1=<FILE1>;
@file2=<FILE2>;
の@file1 と @file2 を連結して@file にしたい
ってところデス。質問の本質がソートじゃないですねスイマセン。
別のファイルに出力してそれをまた読むというのがさすがに頭悪い気がするのでお知恵を拝借に来ました。
どーでもいーけどスペースをセパレータにしたら
file3.txt
じっちゃん 国語 34点 数学 34点
だったときに困るなぁ。
苗字や名前が「国語」でも困るなぁ。
まぁそれはパールとは関係ないからパスで。
よろしこプリーズ
0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNG質問が無駄に長い
簡潔に書け
0393390
NGNG391 thx!
0394390
NGNGすんまへん
以上
0395デフォルトの名無しさん
NGNG> @file1 と @file2 を連結して@file にしたい
@file =(@file1,file2);
0396デフォルトの名無しさん
NGNG× file2 → ○ @file2
0397デフォルトの名無しさん
NGNGエラーが出るのですが、皆さんは入りました?
エラー内容は下記の通りです。
Error writing to file:
C:\Perl\site\lib\auto\Win32\EventLog\EventLog.dll.
Verify that you have access to that directory.
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNGC:\perl\(省略)\EventLog.dll
そのディレクトリにアクセスすることを確認してください。
和訳してやったぞ。
0400デフォルトの名無しさん
NGNGえー、、なんて言えばいいのかな?以下のような事出来ますか?
my @arr = (
[qw(a b c d e)],
[qw(f g h i j)],
[qw(k l m n o)],
[qw(p q r s t)]
);
# abcd
print @{$arr[0]}[0 .. 3];
# hij
print @{$arr[1]}[2 .. 4];
# afkp
print join('', map $arr[$_][0], 0 .. $#arr);
最後の afkp の所で巧くスライス指定したいなと思うのですが、
指定方法がわからないのです。
0401デフォルトの名無しさん
NGNGPerl は型としての二次元配列をサポートしているわけではないので
そういう書き方でやるしかない。頻繁にやる処理ならサブルーチン化
すればいい。
sub get_row(\@$) {
my($array, $num) = @_;
map $array->[$_][$num], 0..$#{$array};
}
# afkp / bglq / chmr / dins / ejot
print get_row(@arr, $_), "\n" for 0..4;
# gl
print +(get_row @arr, 1)[1,2], "\n";
0402デフォルトの名無しさん
NGNG>>401
そうだったのか、ありがとう
勉強になりました
0403デフォルトの名無しさん
NGNGmy @da = (
[qw(a b c d e)],
[qw(f g h i j)],
[qw(k l m n o)],
[qw(p q r s t)],
);
foreach (@da) {
print $_->[0];
}
$> afkp
foreachとか使ったらあかんの?
(これ試してみるまで(qw(a b c), qw(d e f), qw(g h i)がフラットになるなんて知らんかった_| ̄|○)
0404デフォルトの名無しさん
NGNG戻り値が必要なければfor(each)を。
0405デフォルトの名無しさん
NGNG0406Ruby最高言語!!!!!
NGNG0407デフォルトの名無しさん
NGNG巣へおかえり。
0408デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG書き出すと文字化けするんですが、なぜでしょうか?
UTF8なら問題ないです。
どうも特定の文字で化けるらしく、「伊」のほかに、「上」「休」でも化けるようです。
0411デフォルトの名無しさん
NGNGUTF-16 では '伊' eq "\x0A\x4F", '上' eq "\x0A\x4E";
なので binmode 忘れぐらいしか思い当たらないなぁ。
'休' は分からん。
0412デフォルトの名無しさん
NGNGやりかたもきぼんぬ
0413デフォルトの名無しさん
NGNG一般的に使われているライブラリは何でしょうか。
それともみんなSOCKET使ってダウンロードしてるんでしょうか。
0414デフォルトの名無しさん
NGNGhttp://perldoc.com/perl5.8.4/pod/perl.html#Internals-and-C-Language-Interface
>>413
http://search.cpan.org/~gaas/libwww-perl-5.800/
http://homepage3.nifty.com/hippo2000/perltips/LWP.html
0415デフォルトの名無しさん
NGNGどうも
0416410
NGNGすいません「休」でなくて「養」でした。ほかに「*」も。
ぜんぶx0Aがらみですね。
↓これで「伊藤」以降が化けるんですが、どこか間違っていますか?
(UTF-16LEをUTF8やshiftjisにすれば大丈夫なのですが)
use utf8;
open OUT,">:encoding(UTF-16LE)","kekka.txt";
print OUT "佐藤伊藤後藤";
0417デフォルトの名無しさん
NGNGだから binmode だって。Windows でしょ?
http://perldoc.com/perl5.8.4/pod/func/binmode.html
use utf8;
open OUT, '>', 'kekka.txt' or die $!;
binmode OUT; # LF → CRLF 変換の抑制
print OUT "\xFF\xFE"; # BOM
binmode OUT, ':encoding(UTF-16LE)'; # 出力文字コードの指定
print OUT '佐藤伊藤後藤';
0418Ruby最強!!!!!!!!
NGNG0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNGbinmodeしなくちゃいけないのはバグかもね。。。
Jcodeメーリングリストとかに報告するのがいいかも。
0422デフォルトの名無しさん
NGNG確かにバグだね。
でも、Jcodeメーリングリストって機能してるの?
ウイルスの投稿があっても平気の平左だし、
読むの止めたからどうでもいんだけど
0423デフォルトの名無しさん
NGNGあるいは、danさんに直メールでもいいんじゃね?
0424410
NGNGUTF16のときだけ変な挙動だなと思ってたんですが、バグでしたか。
0425デフォルトの名無しさん
NGNG最近のバージョンの Perl は怖くて使えませんね。
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNG↑これってなんて読むんですか?
ちょんぷ?
0428デフォルトの名無しさん
NGNGを
@integer=(0x12,0x34,0x56,0x78)
のようにしたいのですが動作すればOK?
要するに
@integer = CreateByteArray($str);
みたいのです。
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGいまいちよく分からんがこういうこと?
@integer = map { hex } unpack "(a2)4", "12345678";
0431デフォルトの名無しさん
NGNGpack -->リストからスカラをつくる
unpack-->スカラからリストをつくる
であってます?
0432デフォルトの名無しさん
NGNG$invader =
"47494638396115001500b30000000000949494ffffffffffffffffffffff".
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff".
"ff21f90401000000002c000000001500150000043e10c82983b5346b70f1".
"d65df8516107065559a69eba7257cab6284ccf35edee7c6f4ebedaa9f709".
"8e6019cf51291bfd80b1cd73361456495169f6c8ed7e22003b";
print "Content-type: image/gif\n\n";
print pack("H*",$invader);
0433デフォルトの名無しさん
NGNGそりゃ、OSの実装上の問題だろ?
バグって言わんと仕様っていうんだよ。
>>425
>最近のバージョンの Perl は怖くて使えませんね。
┐( ̄ー ̄)┌ 昔からそーいう仕様だけど?
素人?
0434デフォルトの名無しさん
NGNG┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌┐( ̄ー ̄)┌
0435デフォルトの名無しさん
NGNGええ、素人ですよ。素人には怖くて安心して使えないと言ってるわけなのですが、だからなんなんでしょうか?
0436デフォルトの名無しさん
NGNG知らないなら憶えればいいんであって、そこを自慢されても痛いだけだぞ。
0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNGperl -ne 'print if /REGEX/' foo.txt
0439ヽ(´ー`)ノ ◆.ogCuANUcE
NGNGadd() で $self にアクセスすると落ちる。
バージョンは 5.8.4。
{
package Container;
use overload
'+=' => sub {
# impl.
},
'fallback' => 1;
sub new
{
my ($class) = @_;
return bless([], $class);
}
sub add
{
my ($self, $item) = @_;
$self += $item;
}
}
my $p = Container->new();
$p->add('a');
0440デフォルトの名無しさん
NGNG確かに落ちるね。同じく5.8.4(ActivePerl build810)
=(copy constructor)を定義すれば落ちないので原因はfallbackされた=のようだが…
0441デフォルトの名無しさん
NGNGperl5.8.5 on linux 2.4.26-0vl16(i686)
ともに墜ちますた。
0442ヽ(´ー`)ノ ◆.ogCuANUcE
NGNGパッケージ外から += を使うと問題ないんだよね。
# その例だと $p += 'a' とか
copy constructor を定義してもいいんだけど、コピーの必要ない作業だし…(´・ω・`)
0443デフォルトの名無しさん
NGNG別に間違っちゃいないけど付け加えるなら pack は「特定の形式にデータを詰め込む」
というニュアンスがつく。unpack はその逆でばらす。
しばしばバイナリデータの読み書きに利用される。
0444デフォルトの名無しさん
NGNG詰め込むってどうゆう意味ですか?
0445デフォルトの名無しさん
NGNGttp://web.archive.org/web/20040202023142/http://www.mikeneko.ne.jp/~lab/perl/numerical_transform/
本当はこっち張りたいんだけど、
ttp://www.mikeneko.ne.jp/~lab/perl/numerical_transform/
ということでご冥福をお祈り申し上げます。
0446Rub >>>>>>>>>>>>>>>> Pwerl
NGNG0447デフォルトの名無しさん
NGNGググっても過去ログ(1〜6箱目)見ても分からぬ。
多分マウス、キーボードの操作を実行するアプリケーション(APIって言うのかな?)の中のメモリを書き換えれば良いんだろうけど。
生憎此方にある参考書と言えば入門用だけ。機会あれば図書館でラリー・ウォール氏の本でも借りてみる。
Cと同じく変数の頭をアスタリスクで・・・違うか。
windowsXPですがどうでしょ。
プログラミングの常識として可笑しい所は指摘しつつ教えてくれれば幸い。
0448デフォルトの名無しさん
NGNGSEX
0449デフォルトの名無しさん
NGNG可笑しくない所が見つからない
0450デフォルトの名無しさん
NGNGまずは国語から。君にプログラミングなんて100年はやい。
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNG各行の数字にそれぞれ1を足して、$a, $b, $cに代入するとき
ある本のサンプルでは以下のような処理をさせていました。
seek(LOGFILE, 0, 0);
$a = 1+ <LOGFILE>;
$b = 1+ <LOGFILE>;
$c = 1+ <LOGFILE>;
なぜ自動的に1行ずつ移動するのかが理解できません。
リファレンス本でseekの部分を読んでも、そのようなことは書いていないのですが…。
分かりやすく説明してあるようなサイトなり本なりあったら教えて下さい。
0453デフォルトの名無しさん
NGNGまっとうな解答する振りして、本に書いてる事を絶対だと思うボケ。
0454デフォルトの名無しさん
NGNGその逆をする関数はありますか?
0455デフォルトの名無しさん
NGNGこの場合はseekじゃないな。
ポインタみたいなもんと理解汁。
0456デフォルトの名無しさん
NGNG@_=<LOGFILE>;
a = 1+ shift;
$b = 1+ shift;
$c = 1+ shift;
意味変ってくるけどニュアンス的にはこんな感じ。
0457デフォルトの名無しさん
NGNG何となく判った気がします。
seekは関係なく、スカラー値にファイルハンドルを代入しようとするからですね。
となると、seekの存在意義がよく分からないのですが、
それはファイルポインタを理解してないせいだと思います。
その辺はちょっと自分で調べてみます。
ありがとうございました。
0458デフォルトの名無しさん
NGNG逆って何すりゃいいの?
0459デフォルトの名無しさん
NGNGhttp://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq4.html#How_can_I_take_a_string_and_turn
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG�d!!
0462デフォルトの名無しさん
NGNGみんな意地悪だなぁ
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNGまた2冊化だよ
0465デフォルトの名無しさん
NGNG基本的な言語仕様とリファレンスはVol.1、
応用部分をVol.2とかで分けて欲しかった。
0466デフォルトの名無しさん
NGNG内容かなり変わってるのかな?
流石に旧版持ってると二の足を踏んでしまう
0467デフォルトの名無しさん
NGNGいやlocaltimeの逆っていわれりゃそういう回答だと思うけど、
timeの逆っていわれてもねぇ?
0468デフォルトの名無しさん
NGNGコピペしたのがバレバレだしちゃんと意味わかってんのかと突っ込まれたりするだろう。
でも、クックブックは良いと思う。
他言語でそれなりのレベルに達してたが、急遽Perlが必要になった人には特にうってつけだね。
0469デフォルトの名無しさん
NGNG理解してるにも関わらず言ってるんだろうけど。
君らに指摘して欲しいわけじゃないからゴメンな。
ここはもう質問の場じゃ無いようだ。
スレッドタイトル修正宜しく。
0470デフォルトの名無しさん
NGNG0471455
NGNG日本語もへんだが、何したいのかもわからねぇってことだろ?
マジレスしといてやるとpureperlで出来ね。
そんなモジュールあるんかもしれないけど、
儂は知らんし、スレ主はモジュールの入れ方も使い方も解らんでないだろうか?
>>457
>seekの存在意義がよく分からないのですが、
使うんなら
seek(LOGFILE, 0, 0);
read(LOGFILE,$hoge,$byte);
$a = 1+ $hoge;
$b = 1+ $hoge;
$c = 1+ $hoge;
みたいにデーターの読み込み開始位置をseekで指定してとreadで何バイト読み込むとかいった風に使うと
漏れは理解してるんだけど、他に面白い使い方ってあるんかな?
0472デフォルトの名無しさん
NGNGそれはseek関数とは全く関係なく、<>が「行入力演算子」だからだ。
ファイルハンドルは内部に読み込み位置のポインタを保持している。行入力演算子は
読み込みが起きると同時に、ポインタを読み終わった次の位置まで進める。
seekはその内部ポインタの移動命令で、そのコードでは読み込み開始前にポインタ
位置を先頭に初期化しているにすぎない。読み込むたびにポインタが移動するのは
行入力演算子の機能。
詳しく言えば、そのコードでは行入力演算子がスカラーコンテキストで評価されている
から一行入力になっているが、リストコンテキストになると行入力演算子はファイルを
一気に全部読み取って、行単位で分割した結果をリストにして返して、ポインタも当然
ファイル末尾まで一気に移動したりするんだが、そのコードには関係ない話だな。
以上。
0473デフォルトの名無しさん
NGNGencodingとかの5.8の新機能の記述を大幅追加、ってoreilly.comにあったので
今年の1月くらいにとりあえず尼で原本買ったけど、
perl encoding でぐぐってgetできる情報の半分もなかった。ガクリ
XMLとmod_perlの追加章目当てでないのなら
第1版持ってるヤシには買いなおし不要だと思う。
0474デフォルトの名無しさん
NGNGなるほど、やめとくよ thx
0475デフォルトの名無しさん
NGNG$csv_list[0] = "データ0,データ1,データ2,データ3,データ4";
$csv_list[1] = "データ5,データ6,データ7,データ8,データ9";
・
・
・
を
@list[0][0] = "データ0";
@list[0][1] = "データ1";
@list[0][2] = "データ2";
@list[0][3] = "データ3";
@list[0][4] = "データ4";
@list[1][0] = "データ5";
@list[1][1] = "データ6";
@list[1][2] = "データ7";
@list[1][3] = "データ8";
@list[1][4] = "データ9";
・
・
・
って感じの構造体(?)に格納するコーディング方法がわかりません。
どなたかご教授ください。
0476デフォルトの名無しさん
NGNG@list = map [split /,/, $_], @csv_list;
わかりにくければ泥臭く
foreach my $i (0..$#csv_list) {
my $j = 0;
foreach my $data (split /,/, $csv_list[$i]) {
$list[$i][$j++] = $data;
}
}
とかでもいいとは思うが。
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG>>476がしっかりした回答をしているが、補足。
× @list[1][4] = "データ9";
○ $list[1][4] = "データ9";
これを理解することはPerlを使っていく上でものすごく大事なこと。
0480デフォルトの名無しさん
NGNGそんなの、perl本体のプログラムが融通聞かせたらいいだけの話だと思うんですが。
0481shige
NGNG0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNGshbangのことなんだったら、Perlは関係ない。
0486デフォルトの名無しさん
NGNG意味不明杉手和歌利魔線
0487デフォルトの名無しさん
NGNG0488デフォルトの名無しさん
NGNG語力が無いと言うだけで弾かれたのですが。
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGそこら辺読み易くて良いよね。
コンパイルも不要だから手間要らないよね。
でも大掛りなプログミングには向いていない希ガス。
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNGまぁPHP(ry
0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNGその発想でいくと、変数名に$とか%とか#とかが付くN88BASICも超カッコイイなw
0495デフォルトの名無しさん
NGNGN88BASICは行番号もつくからかっこいい!
N88BASICはコメント込みでMAX64KBでかっこいい!(どれだけ苦労したか(w
0496デフォルトの名無しさん
NGNG(BASIC一般かどうかはしらない)
あと、64KBも使えませんよ? 32KBっしょ。
中間コードに変換されると縮んだ記憶があるので、いわゆるテキストで32KBではないよね。
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG画、音楽、小説などのカテゴリーごとにベスト3をアンケートしてベスト1には3ポイント、
べスト2には2ピント、ベスト3には1ポイントのようにしてカテゴリーごとに順位集計して
ランキングのように表示するCGIを使いたいのですがこれに近いCGIがあったら、
教えてください。また、ランクごとにリンクで飛べるようにもできる方法があればおねがいします。
どうぞよろしくおねがいします。
0500デフォルトの名無しさん
NGNG内部でのデータの扱いに四苦八苦しています。Perlでは、
・構造体や独自の型宣言ってできますか?
・構造体の配列(或いは配列の配列、多次元配列)を扱えますか?
・連想配列の返値に配列を返すことはできますか?
ポインタを使って行っていたような作業をPerlで行うのはどうすればよいのでしょうか。ご教示ください。
0501デフォルトの名無しさん
NGNGスレ違いどころか板違いだ
【CGI】こんなCGI探してますver.14
http://pc5.2ch.net/test/read.cgi/hp/1087986364/
0502デフォルトの名無しさん
NGNGグロブは当面忘れて良い。
Perlには他の言語(Cとか)の型に相当する物は無い、文字列 or 数値として適当に解釈してくれる。同じく構造体も無い。
しかし、スカラ、配列、ハッシュ(連想配列)を何段階でも適当に組み合わせて(一々定義せずに!)使う事が出来る。
ポインタの代わりに、もっと分かりやすいリファレンスを使う事が出来る。
# モジュールをOO的なクラスとして設計する事も出来るけど、単にデータ構造を使いたいだけならそこまで必要ない
ざっと以下を眺めるのをお勧めする
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perldata.html
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perllol.html
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlref.html
http://www.kt.rim.or.jp/~kbk/perl5.005/perldsc.html
順に Perlのデータ型、リストのリスト、リファレンス、データ構造クックブック
0503デフォルトの名無しさん
NGNGうわぁーい、釣れた
0504デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG「はじめてのPerl」レベルじゃきっついなー。
CGIのサンプル集とかはいっぱいあるけど、
Perlのサンプル集って意外とないですよね。
今のところ、cookbookほどのレベルは求めてないんですが、
主にテキストファイルをいじったりするのに良いサンプル集ってありますか?
(宮川氏訳のも求めてる以上って感じで、まだ早いかなと…)
目的としては、実務利用と「はじめてのPerl」の実践的復習・応用力強化を行ないたい
って感じなのですが、参考書籍・サイトなどあったら是非。
0507デフォルトの名無しさん
NGNG>>3
0508デフォルトの名無しさん
NGNG通常ファイルってどういうファイルのことなんですか?
0509デフォルトの名無しさん
NGNGいざ書こうと思うとネタが出てこないんだよな
普段は意識せずに使ってるから尚更思い出せなくて
>>506
テキストファイルをいじる練習なら、適当なログファイルを加工するのが良い
ApacheのログからURLをヒット数でソートして表示する、
その際にリファラが内部からの物は除外して、外部からの訪問者が多い物だけを対象にする
サーチエンジンからのアクセスは除外、ワームっぽいアクセスも除外する
とかね。
0510デフォルトの名無しさん
NGNGperlscriptでWEBブラウザからtracertやnetstat等、システムコマンドを使い、その結果を新しいウィンドウで表示したいのですが、
以下のようにしても結果が表示されません。表示する変数には実行結果の最後の行(空白)だけが入っている模様です。
他の方の質問と比べて低LVで申し訳ありませんが、お助けください_no
WinXP、ActivePerl5.6.1です。
<html><head><title>TraceRoute</title></head>
<script language = "PerlScript">
sub button1_click{
$form = $window->document->form;
$host = $form->host->{'value'};
@traceroute = `tracert $host`;
$window->document->write("@traceroute");}
</script>
<body>
<h2>TraceRoute</h2><hr>
<form name="form"><table>
<tr><td>IPアドレス or ドメインネーム:</td>
<td><input type="text" name="host" size=50 value=""></td></tr>
</table><p>
<input type="button" name="button1" value=" 実行 " onclick="button1_click()">
</p></form></body></html>
0511デフォルトの名無しさん
NGNG通常でないファイルにはそれ用のファイルテスト演算子があるので
そこから類推しましょう。判断し難い場合は実際にテストスクリプトを
書いて試しましょう。
http://perldoc.com/perl5.8.4/pod/func/-X.html
>>509
http://www.oreilly.co.jp/books/4873110920/
0512デフォルトの名無しさん
NGNGいずれも、
print "\n";
だと、0d0aが出力されますが、
use encoding "XXXX"; # sjis と utf8 しか試してませんが
print "\n";
だと、0aしか出力されません。
encodingってこのような仕様なのでしょうか?
use encoding する/しないで \n の意味を変えないように
する方法とかありますでしょうか?
print "\r\n"; だと、use encoding しない時は 0d0d0aが出ます。(当然)
0513デフォルトの名無しさん
NGNG本当にその二行で再現する?
こちらの環境 (ActivePerl Build 810 on Win98SE) では
どちらも \x0D\x0A が出力されたよ。
0514_gunzip
NGNG記憶によればclient-side PerlScriptではopen CMD, "anycommand -opt |"や
backquoteは使えないのではなかったか。
system("anycommand >outfile")でいったんファイルに落として読みなおすのが素直かも。
Windows環境が今ちょっと手元にないので試してないが大体以下のような感じ。
<script language = "PerlScript">
sub execute_command {
my $command = shift || return;
my $tempfile = "tempfile.txt"; #or File::Temp
my $endcode = system("$command >$tempfile");
if ($endcode != 0) {
#blah, blah, blah
}
open TEMP, $tempfile or return;
my @result = <TEMP>;
close TEMP;
unlink $tempfile;
return wantarrary ? @result : \@result;
}
sub button1_click {
my $host = $window->document->form->host->{"value"};
$window->document->write(execute_command("tracert $host"));
}
</script>
後は同じ。
0515初心者
NGNGこちらでよろしいでしょうか?
0516デフォルトの名無しさん
NGNGhttp://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.4.810-MSWin32-x86.msi
これダウソして実行
以上
0517初心者
NGNGOSはXPで、ノートのCドライブに「perl」っつーフォルダ作って、
んで開封。で、インストーラー使うんですけども。なんか最後のほうで
「このパッケージはダメです」みたいな文が出て、アンインストールしてしまいます。
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGDOSなんて使いづらいことこの上ないし、その方がずっと快適だよ。
0521初心者
NGNGググってもみたんですが、同じような症状に出会わないので。
また、どのver.でも同じエラーになります。
AS(?)でインストールしたほうがいいのでしょうか?
0522デフォルトの名無しさん
NGNGwinにmsi用のインストーラが入ってねんだろ
スレ違い板違い
0523初心者
NGNGそれは95、98、NTのことでしょうか?
自分のはXPなので、インストーラーは入っているはずなのですが。
0524デフォルトの名無しさん
NGNG> 多分マウス、キーボードの操作を実行するアプリケーション(APIって言うのかな?)の中のメモリを書き換えれば良いんだろうけど。
(この話はWindowsであることが前提)
残念だが、アプリケーションの中のメモリを書き換えることも
APIの中のメモリ(そもそもAPIは概念,総称とかそういうものだろう)を書き換えることもない。
Win32APIの関数で、カーソルを移動させて、クリックをエミュレートする。
> 生憎此方にある参考書と言えば入門用だけ。機会あれば図書館でラリー・ウォール氏の本でも借りてみる。
Perl+API(Win32環境ではWin32API)について解説していない本を何十冊読んでも
解決はできないだろう
> Cと同じく変数の頭をアスタリスクで・・・違うか。
×
> プログラミングの常識として可笑しい所は指摘しつつ教えてくれれば幸
回答者の神経を逆撫でするような態度は如何なものかと思う
Perl+Win32(どっかが本だしてたかな)について勉強してきな。話はそれからだ。
0525デフォルトの名無しさん
NGNGここはム板だぞアホw
適当な板にいけ。それから質問するときはちゃんと環境とやったことエラー詳細を書けよ、常識だ。
0526初心者
NGNG「enter top level directory for install [C:\perl]」
というところは、なんと入力すればよいのでしょうか?
0527初心者
NGNGすいません、本当にわからないんです。
助けていただけないでしょうか?
0528デフォルトの名無しさん
NGNG池沼は放置しろよ。
0529デフォルトの名無しさん
NGNGa8やら0dやら関係無い文字列が付与されたデータが返ってくるんですけど、どうにかなりませんか?
0530デフォルトの名無しさん
NGNGエスパーさんなのでなんとか質問の意味が想像付くけど、意味不明の遺言のようですね。
HTTP/1.1の仕様でも読んでみましょうね。
0531デフォルトの名無しさん
NGNGどうもです。
ttp://www.mars.dti.ne.jp/~torao/rfc/rfc2068-ja.html
ここら辺にあると思うのですがどう探せば・・
0532デフォルトの名無しさん
NGNGたぶん3.6転送コーディングあたり。
けどLWP使った方が楽だと思うよ。勉強にはなるから
一度ぐらいはやってみるのもいいけどね。
0533デフォルトの名無しさん
NGNGありがとうございます!
こういう事だったんですかー
0534510
NGNG先日はどうも有難うございました。試したところ、うまく動作致しました。
しかしあの方法ですと、実行結果が改行無しに表示されてしまい、とても見難いですね。。。
これを
1 <1 ms <1 ms <1 ms xxx.xxx.xxx.xxx
2 5 ms 5 ms 2 ms xxx.xxx.xxx.xxx
3 3 ms 3 ms 2 ms xxx.xxx.xxx.xxx
のような感じで表示するためのアドバイスを頂けたら嬉しいです。
結果表示の方法には特に拘りません。(新しいウィンドウに表示、テキストエリアに表示等。。。)
0535デフォルトの名無しさん
NGNGオ、マ、エは阿呆か(w
0536初心者
NGNG「そんな板で聞くから悪い。あそこ厨しかいねえじゃん」
と思いっきりバカにされました。反省しようと思います。
0537510
NGNG0538デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/php/1092734362/582
待て待て。まだIDにPerlと出たわけじゃないぞ。
0539_gunzip
NGNGPerlScriptは、友人に使わせるPerlスクリプトのをTkで組むのがだるいときにHTAと何度か使った程度。
一応テキストボックスやボタンとかも揃っているしな。それなりのことはできる。
Textboxに表示したいなら、button1_clock()を以下に差し替え、
sub button1_click {
my $form = $window->document->form;
my $host = $form->host->{"value"};
$form->result->{innerText} = join("", execute_command("tracert $host"));
}
<textarea id="result" cols="80" rows="10"></textarea>を下のフォーム内に挿入してやれば
結果がテキストボックスに表示される。
この辺りは通常のPerlスクリプトとは勝手が違うから何をやっているか説明する・・・程のこともないよな。
ただ単に$form->resultオブジェクトの"innerText"プロパティにexecute_command()の結果をセットしただけだ。
HTMLで出力したいときは、結果はexecute_command()から
リストで返ってきているのだから適当に加工すればよいだけ。
・・・もういちいち書かなくて良いよな?
$window->document->write("<html><body>", join("<br>", execute_command("tracert $host")), "</body></html>");
いい加減だが。
というか何かある度に聞くのも面倒くさいだろうから書くけど、今後独習するつもりなら。
例えば、どのオブジェクトでも良いが、
my $form = $window->document->form;
foreach my $attr (sort keys %$form) {
$window->document->write("$attr = \"$form->{$attr}\"<br/>");
}
とかやってみ。"innerHTML"や"tagName"といったプロパティ、"onClick"や"onmousemove"といったシグナルなどが
ずらずらと大量に表示されるはずだ。他は"parentNode"や"children"とかWin32::OLEオブジェクトだ。
面倒なので説明せんけど。まあわかるよな。
前者は先から見るようにいろいろ値をセットできるし、
後者は$form->result->{onclick} = sub { do_something(); } のようにコールバックを登録できるはずだ。
あとは自分で試行錯誤してみてくれ。
0540534
NGNGおぉおお・・・わかりやすい解説ありがとうございます。
自分なりにテキストボックスに入れるために色々やっていたのですが、かなり見当違いのことをやっていたようです。
今回は私のような者にお付き合い頂き、本当にありがとうございました。
貴方のアドバイスを無駄にしないようにがんばって勉強したいと思います!
0541デフォルトの名無しさん
NGNGSubmitボタンは使用しないで、POSTでデータを渡す方法です。
よろしくお願いします。
0542デフォルトの名無しさん
NGNG外部コマンドの標準出力を読み取りたいと考えています。
そこで
open(IN, "command |");
while (<IN>) {
print $_;
}
close(IN);
としました。
コマンドの処理がすぐに終われば問題ないのですが
コマンドによる出力が断続的に延々と続くので逐一表示していきたいのです。
マルチスレッドにしなければいけないのかなと思いつつ、
マルチスレッドにしてもどう書けば実現できるのか
皆目見当がつきません。
どなたがご助言をお願いします。
0543デフォルトの名無しさん
NGNGLWP
0544デフォルトの名無しさん
NGNG$pid = open(PIPE, "|-");
if($pid){
exec("command");
exit();
}else{
while(<PIPE>){
print $_;
}
}
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNGここでもいいんですか?
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNG即レスありがとうございます。
しかしながら解決に至りませんでした。
最初の質問が言葉足らずで申し訳なかったのですが、
コマンドによる生の標準出力は(できれば)抑えて
Perlでその標準出力を読み込み、そのデータを整形してから
出力したいと思っているのですが、できるんでしょうか?
0549546
NGNGというかどれが便利ですかね?
Data::Simple使ってたんですが、最近時刻の処理もすること多くなりそうで
Time::Pieceに乗り換えようかと思っているのですが
日付のモジュールはこれがいいよ!みたいのがあったら教えてもらえると嬉しいです
0550546
NGNGData::Simple -> Date::Simpleです。すんまへん。
0551デフォルトの名無しさん
NGNG> /dev/null
0552デフォルトの名無しさん
NGNGすみません。意味がわからないです(汗
もうすこし詳しくお願いします。
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG質問の意味が不明。
どう解釈しても、その質問ならば >>544 で実現出来てるぞ
0556デフォルトの名無しさん
NGNGもうすこしがんばってみます。
0557デフォルトの名無しさん
NGNGいや、GUI出力だとそうとはいえん。
0558デフォルトの名無しさん
NGNGできれば言語はperlで!
どんな方法あります??
環境はlinux。相手ソラリスです。
0559デフォルトの名無しさん
NGNGNTPっぽいサーバとクライアントを作れば?
0560デフォルトの名無しさん
NGNGいや、GUIじゃなくてCUIです。
例えば取り込んだコマンド標準出力を
$stringに代入しようとしたら、何を代入すればいいんでしょうか?
0561デフォルトの名無しさん
NGNG>>554
0562デフォルトの名無しさん
NGNGいまだ理解不能。
0563デフォルトの名無しさん
NGNG$pid = open(PIPE, "|-");
if($pid){
exec("command");
exit();
}else{
while($string = <PIPE>){
print $string;
}
}
坊主、これでいいか?
>>558
NTPを使わない/使えない 理由は?
NTP使うのが一番楽だし、上記の理由によっちゃPerlでもダメって事もあるぞ
0564デフォルトの名無しさん
NGNG544氏の例だと
$string = <PIPE>;
改行ごとするっと飲むなら
undef $/;
してから
$string = <PIPE>;
べつにフォークする必要がなくても飲み込みかたは同じです。
0565デフォルトの名無しさん
NGNGファイアウォールがntpのポートをブロックしてて
届かないんです。しかたなくtelnetして時刻とりだしているんですが
ログインする時間のタイムロスで多少時間ずれるのが
なんとなく嫌だなぁ、と。。。
0566560
NGNG'-' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
これはなんなんでしょうか?
あと、どうもelse文のなかに入っていってないような気がするんですが。
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNGポート変えて動かせない?
他のポート空いてないとPerlでサバ/クラするにしても無理だぞ
0569デフォルトの名無しさん
NGNGそうだったんですか・・・
本当にすみませんでした。
0570デフォルトの名無しさん
NGNGかわいそうに。。 (w
私もwinは分かりませんが(スレッドも)
Cygwinとか入れればなんとかなるんじゃない?>566
ちなみに |- は自プロセスをforkして外部コマンドを並列で動かしてねん、
って意味だよ。おじゃま虫でした。たったった〜
0571デフォルトの名無しさん
NGNG空いてるのは20,21,23だけなんです。
pingさえ弾かれる。。。
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGhttpd動いてるのならCGIで時刻もらって、
dateコマンドでいいんじゃない。
0575558
NGNG0576デフォルトの名無しさん
NGNGwinも分からないのに・・・
かわいそうに。。 (w
0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG”死ね”ってこと?
頭悪いな〜
0579デフォルトの名無しさん
NGNG我らが宣言 our!! って使っている人いる!?
myがあればほとんど事足りるし
いまいち心の琴線に響く使い方がわからんのだが。
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNGきみ良く会社でつまらないって言われるでしょ?
0583デフォルトの名無しさん
NGNGモジュール作らない人には不要。
0584デフォルトの名無しさん
NGNG結構特殊なところで使うし、packageを変えなければ使わないし。
0585デフォルトの名無しさん
NGNGわからないんだよ、そっとしとくのがいいよ・・・・。
0586デフォルトの名無しさん
NGNGタダで、GUIで実行できるIDEのようなものがあれば教えてくらはい。
できればJapaneseがいいです―
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG所詮Perlなんか俺には無理なんだな・・・・
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNG無いわけではない。
http://homepage3.nifty.com/aokura/asperl/asperl.html
http://homepage1.nifty.com/kaityo/copalpro/
但しこのスレは「Perl についての質問箱」なので、
上記ソフトの使い方についての質問はソフトウェア板にでも行ってくれ。
0592579
NGNGそうなんだよね。
use vars $hoge を置き換える以上のものには思えないんだ。
たとえパッケージに使っても、せいぜいパッケージスタティックな変数を
use vars しなくてもいいよってその程度しか感じられないよね。
身近なとこだと$VERSION変数を our でできるとか...
自分でその程度のことしかやってないから「実はなんか積極的な使い道あるのかな?」
と思ってさ。
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNG他はまぁ、ブロックスコープを持つ分strictと相性はいいな。
こんな感じで。
use strict 'vars';
BEGIN{
our $foo = 0;
}
sub f{
our $foo;
$foo++; # OK
}
sub g{
our $foo;
$foo--; # OK
}
sub h{
print $foo; # compile error!
}
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNGその変数を本当に必要としているサブルーチン群でのみ共有出来る。
クラスまで大げさなもの持ち出さなくてもね
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNGC++のfriendみたいに
0600デフォルトの名無しさん
NGNG0601584
NGNG{
package HOGE;
our $foo = 10;
}
$foo = 20;
{
package HOGE;
print $foo;
}
0602584
NGNG{
package HOGE;
our $foo = 10;
my $bar = 20
}
{
package HOGE;
print "$foo\n","$bar\n";
}
0603デフォルトの名無しさん
NGNGsub gomi($){
my $gomi_file = 'chirasi-no-ura.txt';
my $gomi_text = shift;
$gomi_text ||=<<"EOS";
なんかかけよ。
EOS
local *Gomi;
open Gomi, '>>' . $gomi_file or return not $@ = 'Open error[Write mode -> $gomi_file]';
print Gomi $gomi_text;
close Gomi;
return 1;
}
0604584
NGNGこの方が面白くないか?
{
package HOGE;
our $foo = 10;
}
$foo = 20;
{
package HOGE;
print $foo;
}
EOF
gomi(<<EOF);
あっ、違った。こうかな?
{
package HOGE;
our $foo = 10;
my $bar = 20
}
{
package HOGE;
print "$foo\n","$bar\n";
}
EOF
unlink("chirasi-no-ura.txt");
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG末尾から3番目だけですか?(w
でもって、「ひとりごとはチラシの裏にでも書いてろ」の意味が通じなかったかわいそうな>>603に幸あれ(w
0607デフォルトの名無しさん
NGNGhttp://www.itmedia.co.jp/enterprise/articles/0410/05/news016.html
0608512
NGNG亀レスで申し訳ない。少々訂正して、再度質問してみます。
windows(XPsp2)上でActivePerl(5.8.4)と5.8.5(自ビルド)で、foo.plを
use encoding "utf8";
open(A,"> a.txt"); print A "\n"; close(A);
print "\n";
として、perl foo.pl > b.txt で実行すると、
a.txt は \x0d\x0a になりますが、
b.txt は \x0a にしかなりません。
use encoding "utf8"; をコメントアウトすると、
b.txt も \x0d\x0a になります。(a.txt は不変)
一応 binmode STDOUT とかも付けてはみましたが、変わりませんでした。
encodingのこのあたりのことについて何か情報がありましたら
どなたかポインタだけでもお願いします。
0609デフォルトの名無しさん
NGNGperl -e 'for (1..256) { fork; }'
256の部分は搭載メモリ量をMB単位で入れて下さい。
0610デフォルトの名無しさん
NGNGfor (1..256)の部分はwhile(1)にしたほうがいいyp
0611デフォルトの名無しさん
NGNGおひおひ、馬鹿をあおると本当にやるぞ
なんしろ相手は馬鹿だからな
0612デフォルトの名無しさん
NGNG現在使っているWEBサーバがHTMLのリンクによるファイルダウンロードを許容していません。
WEBサーバの設定にてリンクによるファイルダウンロードを実行できるようには出来ません。
そこでperlによりなんとか対象ファイルをクライアントPCにダウンロードさせたいのですが
良い方法はないでしょうか?
# それで悩んでいる担当が先週沖縄へ新婚旅行だったのですが
# 台風の為中止となってしまいました。
# さすがにちょっとこれ以上悩ませるのはどうかと・・・
0614デフォルトの名無しさん
NGNGtelnetを使ってpop3サーバから受信メールのリストを表示させるプログラムをperlで
作ったのですが、実行すると、
+OK <[email protected]>
+OK
-ERR authorization
と表示されて、アクセスする権利が与えられません。どうしてでしょうか?
プログラム上からコピーしてコマンドプロンプトで実行するとうまくいくので、
タイプミス等ではないと思われます。
waitforの使い方もまだ完璧ではないです。
どなたか、アドバイスでも教えて頂けないでしょうか?
作成したプログラムは次に書きます...すみません。
0615デフォルトの名無しさん
NGNG【作成したプログラム】
$host = '192.168.x.x';
use Net::Telnet ();
$t = new Net::Telnet (Timeout => 20,
Port => 110,
);
$t->open($host);
@lines = $t->waitfor('/ /');
print @lines;
$t->print("user [email protected]");
@lines = $t->waitfor('/ /');
print @lines;
$t->print("pass xxxxx");
@lines = $t->waitfor('/ /');
print @lines;
@lines = $t->waitfor('/ /');
print @lines;
$t->print("list");
$t->print("quit");
$t->close($host);
0617デフォルトの名無しさん
NGNG>$t->print("user [email protected]");
user xxxxx だけで @以降は不要じゃないの?
少なくとも俺の使ってるプロバイダだとそうだよ。
perlというよりはpopの話だけどね。
スクリプト組む前に手で試してみた?
0618デフォルトの名無しさん
NGNGはい手で試しました。
私も、家のプロバイダのほうは@以降は不要で、上記のプログラムでもうまく
いくのですが、会社の方はなぜか@以降が必要で、
上記のプログラムだとうまくいかないのです...
0619デフォルトの名無しさん
NGNG間違いなく
user [email protected]と書いてました...
0620デフォルトの名無しさん
NGNG>>616 の意味わかってないでしょ。 "user xxxxx\@xxxxx.co.jp" って書いてみて。
0621デフォルトの名無しさん
NGNGつか Net::POP3 を使わず Net::Telnet でやるのは何を意図して?
0622デフォルトの名無しさん
NGNGすみません...試そうと思ったら、会社でしかできませんでした。
必ず、明日一番に試します、ありがとうございます。
\にはなんの意味があるのですか。
>>621
そんなのがあるなんて、知りませんでした...
0623デフォルトの名無しさん
NGNGperlで、ランダムに文字列を作製するには
どのように書くのが一般的でしょうか?
具体的に言うと、英数字と"."と"_"の文字を
ランダムに選んで5文字の文字列を作るという
ような場合です(パスワードを無作為に発生
させるような場合など)。
0624デフォルトの名無しさん
NGNGmy @letters = (0..9, 'a'..'z', 'A'..'Z', '_', '.');
my $str;
$str .= $letters[int(rand(scalar @letters))] for(1..5);
0625デフォルトの名無しさん
NGNG(w
すばらしいな。
分かってもらえてないみたいだけど。
0628デフォルトの名無しさん
NGNG13文字も出るからでしょう。。。
substr crypt(time, $$), -5;
m(_ _)m
0629デフォルトの名無しさん
NGNGあ、塩も100通りしか出ないか鬱。。。
0630デフォルトの名無しさん
NGNG時刻を修正する事を考えないと。
0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNGtime の数値を文字列と認識すると下3桁が無効になるので塩が変化しないと1000秒間同じ結果が出る悪寒。
0633デフォルトの名無しさん
NGNG35wKEc6uAidmo
[22:03:20]% perl -e 'print crypt(time,$$)."\n";'
35wKEc6uAidmo
[22:03:35]% perl -e 'print crypt(time,$$)."\n";'
35wKEc6uAidmo
[22:04:32]% perl -e 'print crypt(time,$$)."\n";'
35O.xsoi8mr0Q
0634デフォルトの名無しさん
NGNG何でPerlのコードにJavaやRubyを混ぜることができるん?
0635デフォルトの名無しさん
NGNGPerlにはC言語でモジュールを作成できるXS(eXternal Subroutine)というインターフェイスがある。
Inline::Cの場合はまぁ想像できるだろう。
単に最初に実行する時にCのソースコードを解析し、XSコードを動的に作成し
ビルドしてInline用ディレクトリにインストールしてロードするだけ。
JavaやRubyも基本的には同じ。
こういった言語には大抵Cでモジュールを作るインターフェイスがあるから、
Inlineモジュール作者はそのJavaやRubyのCインターフェイスとXSの間の
インターフェイスを適当に書く、というわけだ。
0636デフォルトの名無しさん
NGNGを出力するにはどうすればいいでしょうか?
opendirを使用してもサブフォルダ内のファイルまでは
表示してくれません。
0637デフォルトの名無しさん
NGNGこのようにPIDの上位2桁も変化しなければいつまで経っても(w
0638デフォルトの名無しさん
NGNGFile::Find その他。
http://search.cpan.org/search?query=File&mode=all
0639デフォルトの名無しさん
NGNGPerlはいろいろ便利なモジュールがたくさんあるそうですが、
こういった便利なツールを簡単な例を示して
いろいろと紹介してくれるようなお薦めの本はありますか?
0640デフォルトの名無しさん
NGNGperl cookbookとかかな
0641デフォルトの名無しさん
NGNGそのとき必要なとこしか読まないせいか、いつも立ち読みだよ
便利な本だけど
0642デフォルトの名無しさん
NGNGRuby is nanbar one!
0643デフォルトの名無しさん
NGNGcrypt (time ^ $$ ^ unpack "%L*", `ps axww | gzip`), rand($$)
ラクダ本参照w
0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNG具体的には、PerlでfujitsuSSL-IIライブラリが使いたいのですが。
0646デフォルトの名無しさん
NGNG% ./useradd
syntax error at ./useradd line 11, near ") {"
syntax error at ./useradd line 14, near "}"
Execution of ./useradd aborted due to compilation errors.
% cat -n useradd
1 #!/usr/local/bin/perl -w
2
3 chomp (@passwd = `getent passwd`);
4
5 use Term::ReadLine;
6 $term = new Term::ReadLine 'ProgramName';
7
8 if ( defined ($login = $term->readline('Login name>')) ) {
9 foreach (@passwd) {
10 /^(\w+):/
11 if ($_ eq $1) { die "already exixts $_"; }
12 }
13
14 }
0647デフォルトの名無しさん
NGNGとりあえず10行目の末尾にセミコロンが足りないものかと。
0648デフォルトの名無しさん
NGNGよろしくっす!!
0649デフォルトの名無しさん
NGNG2,3ヵ月は質問するんじゃねーぞ
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNGえーとじゃあInline::JavaやInline::RubyはJavaやRubyを
別途インストールしなくても使えるのかな?
0653デフォルトの名無しさん
NGNGもちろん、それぞれの言語をインストールしなきゃ使えない。
まぁ、厳密にはRTLさえあればコマンドがなくても動くものもあるかもしれないが。
0654デフォルトの名無しさん
NGNGJcode.pmで半角カタカナから全角カタカナに変えるには
Jcode->new($str)->h2z->sjis;
では間違っていますか?(実際に使いましたが無反応でした...)
もう一つ。。
require 'jcode.pl';
等、サブルーチン呼び出すときに
&jcode' ... の方か
&jcode:: ... のどちらの方が効率的(処理する速さ)には良いのでしょうか?
あまり気にするなって事ですかね、、、。
何方かご教授願います。
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNGなんやコラ!
0657デフォルトの名無しさん
NGNG使用OS:Win2k SP4
ActivePerl-5.8.2.808を使用
モジュールをinstallしようと思い、以下のように入力実行するのですが、
"MM"とやらのパッケージを読み込み忘れてますのようなエラーメッセージが出てしまい、
正常にインストールされません。
c:\ppm
PPM interactive shell (2.1.5)-type 'help' for available commands.
PPM> install time-hires
Install package 'time-hires?': y
Installing package 'time-hires'...
Bytes transferred: 13043
Can't locate object method "catfile" via package "MM"
(perhaps you forgot to load "MM"?)
at D:/Perl/site/lib/PPM.pm kine 363, <> line 2.
で、"MM"というパッケージが不明なためppmにて
insatll MMまたはsearch MMなどをやってみましたが
どうもそんなパッケージは見当たらないようです。
win32-apiやhttp-liteも同様にエラーが出てしまいinstallされません。
どうかアドバイスをお願いします。
関係ないとは思いながらも下記のバージョンにて試しても変わりませんでした。
5.6.1.629/ 5.6.1.638/ 5.8.0.806/ 5.8.2-808/ 5.8.4.810
0658デフォルトの名無しさん
NGNGたった今time-hiresのインストールをやったけど普通に成功したよ。(WindowXPHome)
0659デフォルトの名無しさん
NGNGマルチバイトが使えないのは分かりますが
使えるようにするのがモジュールですよね?
Jcode.pmでh2zは使えない、と言うことでしょうか?
ActiveState ActivePerl 5.6(Win32)を使用しています。
Jcode.pmはインストール済みです。
ちなみにPerl/CGIを作っています。
0660657
NGNGとりあえず途中経過のみ報告で、
657で書いたのは通常のppm(ver.2.1.5)の方ですね。
で言われた通りにppm3-bin.batのほうでやってみましたが、
c:\>ppm3-bin.bat
PPM - Programmer's Package Manager(3.0 beta 2).
Type 'help' to get started.
ppm> install time-hires
No repositories -- use 'rep add' to add a repository.
ppm>
となってしまいます。ver2.1.5のppmでも同じ結果でした。
なんか根本的に間違ったことしてるのかな・・・・
0661デフォルトの名無しさん
NGNGリポジトリを追加しろと言われてるのだから追加したら?
http://www.ss.iij4u.or.jp/~somali/web/_ppm.html
何にしても 5.8.4 なら Time::HiRes は標準で入ってるから
わざわざ PPM で入れる意味は無いと思うけど。
0662657
NGNGやっと原因がわかりました。
どうやら以前に使っていたv5.6.1の残骸が綺麗に消されていなかったために、
おかしな動作をしていたようです。
ActivePerlをアプリの削除で消し、残骸を手動で消し再度インストールしたところ、
うまくモジュールがインストールされるようになりました。
まさか残骸がこんなとこで悪さするとは思ってもいなかったので、
アプリの削除で消したあと残骸があるかチェックもしてませんでした。
>655,661アドバイスthx
ちなみに古いバージョンを使いたかったのは5.8.4だと動作しないものがあって、
その動作確認のためです。
0663657
NGNG0664デフォルトの名無しさん
NGNG「無反応でした」って、そりゃprintしなきゃ無反応だろうなあ。
あと半角カタカナ入りの文字列は、文字コードを識別できないことがあるから、
newの第二引数に文字コードを指定するべき。
サブルーチンの呼び出しは &p'f(...) p'f(...) &p::f(...) p::f(...) すべて同じ。
ただパッケージの区切りに'を使うのはperl4との互換性の為でしかない。
読みやすさ(人にとってだけでなく、エディタにとっても)の為にも区切りは::を使うべき。
0665デフォルトの名無しさん
NGNGある検索サイトの検索結果を Wget とかでローカルに落として自分のサイトで再利用したい
と思っています。
そこで、Perl で下の様に<!-A-> から <!-B-> まで抜き出すスクリプトを書きたいのです
が、教えてください。
<ローカルに落としたファイルの内容>
----------------------------------
text1
text2
text3
...
<!-A->
hogehoge
ugougo
<!-B->
text1
text2
text3
----------------------------------
0666デフォルトの名無しさん
NGNGそのファイルの中身を全て変数の中に突っ込みまして
s/.*\<\!-A-\>//s;
s/\<\!-A-\>.*//s;
なんてことをする単純なことでは解決できないですか
0667デフォルトの名無しさん
NGNGprint if /<!-A->/ .. /<!-B->/;
}
0669654
NGNGありがとうございます〜
かなり参考になりました。
0670デフォルトの名無しさん
NGNGRuby >>>>>>>>>>>>>>>>>>>>>>>>Perl
0671デフォルトの名無しさん
NGNG通常、readdirはwhile (defined($_ = readdir DAT))で読み出しますが、ディレクトリーごと削除する際に
これでは動作しないことがあります。
そこで、foreach(readdir(DAT))を使うと削除可能なのですが、違いってのはあるんでしょうか?
使用環境はwindowsでPerl5.8.2を使っております。
詳しい方おられたらご教授願えませんでしょうか?
0672671
NGNG%del = (
'file' => sub{#ファイル削除
my $in_dir = shift;
my $list_ary_hash = shift;
my $dir;
opendir(DAT, ${$in_dir}) || die "$!\n";
#while (defined($_ = readdir(DIR))) {
foreach(readdir(DAT)){
if($_ !~ /^\.{1,2}$/) {
$_ = ${$in_dir} . '/' . $_;
$_ =~ s/\\/\//g;
if(-d $_) {
push(@{$list_ary_hash},$_);
$list_ary_hash = $del{'file'}->(\$_,$list_ary_hash);
}
unlink($_) if(-e $_);
}
}
closedir(DAT);
return($list_ary_hash);
},
0673671
NGNG'dir' => sub{
my $dir_ary_hash = shift;
@{$dir_ary_hash} = sort{ length($b) <=> length($a) } @{$dir_ary_hash};
foreach (@{$dir_ary_hash}){
rmdir($_) if(-d $_);
}
undef;
},
);
ソースはこの様な感じです。
普通foreachだとけったいだと思いますのでお知恵を拝借させてください。
0674デフォルトの名無しさん
NGNGreaddirはスカラコンテキストでは次のエントリ、
リストコンテキストでは一気に残り全てのエントリリストを返す。
while (defined($_ = readdir(DIR)))で一つずつ読み出している間に
挿入削除を行えばDIRハンドルのイテレータが無効になってもおかしくない。
0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNG> 通常、readdirはwhile (defined($_ = readdir DAT))で読み出しますが
<snip>
> 普通foreachだとけったいだと思います
その感覚自体が俺にはけったいに思える。
sub unlink_tree { # 改行数の都合上、少々詰めて書く。御容赦。
my $dir = shift;
local *DIR;
opendir DIR, $dir or warn($!), return;
my @entry = map "$dir/$_", grep !/^\.\.?$/, readdir DIR;
closedir DIR;
s|\\|/|g for @entry;
my(@dir, @file);
while (my $entry = shift @entry) {
if (-d $entry) {
push @dir, $entry;
unlink_tree($entry);
}
elsif (-f _) {
push @file, $entry;
}
}
rmdir or warn $! for @dir;
unlink(@file) == @file or warn $!;
}
unlink_tree('./foo'); # ./foo の*中身*を削除
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGよほどけったいだと思わなくもないが....
File::Remove使ったら?
0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNGC言語で言うと %2d って感じのことをしたいんだけど…。
0682デフォルトの名無しさん
NGNG0683671
NGNGご返答有り難うございましたm(__)m
0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNG〜 を抜き出すのに一番美しい書き方はどんな
書き方でしょうか。
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNG@links = ($contents =~ /<a href=\"\S+\">/g);
とかでどう?
0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNGいや
0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNG$file_name = <STDIN>;
open READ, "<$file_name";
while (<READ>)
{
if ($_ =~ /a/)
print "$_\n";
}
close READ;
ファイル名を打ち込ませた後にそのファイル名を読み込み,
『a』がある行を表示させようと思って上記のプログラムを書いたんだけど,
7行目にエラーがあるって言われた。
どこがどう悪いのか教えてくれ〜。
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNGアホ。それで動かしてみろ。
0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNG一日中PCに張り付いて「はぁ?」って書いてんだな。
哀れよのぅ・・・
0701デフォルトの名無しさん
NGNGはあ?
0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNG694は、{}でくくる必要が。 というか省略できなかったのか。
Perlだと大抵expression if xxx;とやるからなぁ。
0704デフォルトの名無しさん
NGNGif文の中が1行でも {} で囲まなきゃダメだろ。
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNGそれだと <a href=" と "> も一緒に取れちゃうじゃん。
中身の 〜 だけ美しく抜き出す方法はない?
なんで () いるの?
0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNGあ、ごめん。いいのか。
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGお、NG設定がさっそく役に立ったよ。
0711デフォルトの名無しさん
NGNG$URL="http://headline.2ch.net/bbynews/subject.txt";
$content = get($URL);
こういう文脈で、$content の一行一行を要素にもつ配列を作るにはどうすればいいですか?
0712デフォルトの名無しさん
NGNGm
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNGなんのこっちゃ
0716デフォルトの名無しさん
NGNG正規表現ですか?
foreach をつかうのかなと一瞬思ったのんですが、スカラーには使えませんよ
ね?
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNGこういうところで質問すんのも調査の一手段でしょ。
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG黙って無視しとけ
0725デフォルトの名無しさん
NGNG0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNG煽りを見ても動じない。
まずはそんな「自分作り」から始めてみませんかこのちんかすどもが。
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNG(;´Д`)ハァハァ… split /\n\r|\n|\r/, $contents;
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNGこの間に、英文テキストファイル(単語数100語程度)を用意し、
これを処理するプログラムをつくります。
プログラムは、
(1)テキストファイルを単語ごとに区切る
(2)単語をソートして並べ替える
(3)ファイルに保存する
という流れで作ってください
↑という問題です
初心者にも分かりやすくお願いします
0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNGにわかは死んだ方が良いよ。
0736デフォルトの名無しさん
NGNG課題は友達に聞け
0738デフォルトの名無しさん
NGNGぼるじょあがC/C++の宿題を片づけますYO! 31代目
http://pc5.2ch.net/test/read.cgi/tech/1095075678/
0739デフォルトの名無しさん
NGNGpush( @s, split(/\W+/) );
}
sort( @s );
foreach( @s ){
print "$_\n";
}
0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGそれ試したのか?
0742739
NGNG0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGソートして並べろとしか言ってないよ
仕様だよ!!ヽ(`Д´)ノ
while(<>) {
push( @s, split(/\W+/) );
}
@s = sort( @s );
$last = "";
foreach( @s ){
if( $_ ne $last ){
print "$_\n";
$last = $_;
}
}
0747デフォルトの名無しさん
NGNG@tango = sort split /\s+/, <>;
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNGハイフネーションもな。
細かい仕様を明確にしない >>733 が悪いので
答える側が好きに処理すればいいんじゃない。
0751デフォルトの名無しさん
NGNG{ x => 'a', y => 'M200408', value => 10 },
{ x => 'a', y => 'M200409', value => 20 },
{ x => 'b', y => 'M200408', value => 30 },
{ x => 'c', y => 'M200410', value => 10 },
....
]
みたいなデータを
[
{ x => 'a', M200408 => 10, M200409 => 20, M200410 => 0 },
{ x => 'b', M200408 => 30, M200409 => 0, M200410 => 0 },
{ x => 'c', M200408 => 0, M200409 => 0, M200410 => 10 },
...
]
みたいに リスト->テーブル変換してくれるようなモジュールってないっすかね?
エクセルのピボットテーブルみたいなやつ。
変換元/先データは別にハッシュ配列でなくても構わなくてよ。
0752デフォルトの名無しさん
NGNGばかかおめー
0753デフォルトの名無しさん
NGNGはげしく同意
0754デフォルトの名無しさん
NGNGテキストエディタの正規表現置換による整形の方がいいんじゃないか?
無理にPerlスクリプトでソースコードを作る意図が判らん。
0755デフォルトの名無しさん
NGNGあ、そう?実際どう書く?
各軸がソートされた結果を手に入れたいとか
軸がネストされた状態に変換したいとか
限られたメモリでも可能とか考えてくと
結構奥深いよ。これ。
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNGDBから上のようなデータが5000万件くらいでてきたら? (w
0758デフォルトの名無しさん
NGNGそう煽って誰かに書いてもらうのを待ってるの?
0759デフォルトの名無しさん
NGNGぷぷ。なんだ。結局考えらんないんじゃん。
ワンライナーって考えるのにそんなに時間かかんの? (藁藁
cpanでData::Xtabってのを見つけたよ。
じゃぁね〜
0760デフォルトの名無しさん
NGNGいいけど
0761デフォルトの名無しさん
NGNGつまり閾値以下なんじゃない?
0762デフォルトの名無しさん
NGNGある処理を加えるという事をしたいと思っています。
やりたい事は↓↓↓のような感じなのですが
file.txtの中身
---ここから---
そうなんです
大変なんですよ奥さん
---ここまで---
open(IN, "file.txt"); # ※1
#oreshiki_open(IN, "file.txt"); # ※2
print <IN>;
close(IN);
sub oreshiki_open{
my $fh = shift;
my $fileName = shift;
open($fh, $fileName);
(my $str = join '', <$fh>) =~ s/です/やん/g;
close($fh);
open(TMP, ">temp.txt");
print TMP $str;
close(TMP);
open($fh, "temp.txt");
}
これだとopen関数の部分をオレ式openに変えるだけで目的が達成出来るのですが
見ての通り美しくありません。
どなたかグッドなアイディアはないでしょうか?
0763デフォルトの名無しさん
NGNGその形式はあまり使いやすいとは思えないな
{
'a' => { M200408 => 10, M200409 => 20, M200410 => 0 },
'b' => { M200408 => 30, M200409 => 0, M200410 => 0 },
'c' => { M200408 => 0, M200409 => 0, M200410 => 10 },
...
}
とかの方がいくない?
0764デフォルトの名無しさん
NGNGopen(IN, "perl filter.pl file.txt|");
とかじゃ駄目?
0765デフォルトの名無しさん
NGNG…普通に処理だけ関数化しろよ
0766デフォルトの名無しさん
NGNG読んでてあきれて来たよ
Larry Wallってもっと優秀なハッカーかと思ってたよ
0767デフォルトの名無しさん
NGNG(a)
処理 #処理についてのコメント
(b)
#処理についてのコメント
処理
(c)
処理
#処理についてのコメント
普通は(a) だと思いますが、(b)(c)は論外なのでしょうか。
行が無駄に多くなる、とかで…。
0768デフォルトの名無しさん
NGNG(c)はないだろ
0769デフォルトの名無しさん
NGNG(構文的/概念的)ブロックに対するコメントや、(a)で書ききれないなら(b)
(c) に出会った事は無いな
0770デフォルトの名無しさん
NGNG# 処理の名前
#****************************
# 処理についてのコメント
$foo = ... # 初期化コメント
$bar = ... # 初期化コメント
処理
#****************************
# ここまで
#****************************
0771デフォルトの名無しさん
NGNG処理B
処理C
# この時点で〜は〜になっている
みたいな使い方なら考えられるかな…。
俺は使わないけど。
0772デフォルトの名無しさん
NGNG$_には4つspaceが含まれていますが、どうやってこの
個数を取得できますか?
0773767
NGNGありがとうございました。
0774デフォルトの名無しさん
NGNG$_ = 'a b c d e';
print tr/ //;
0775デフォルトの名無しさん
NGNGこれPerlエチケットやで
0776デフォルトの名無しさん
NGNGCGIに良くあるが、えらい読み辛いので勘弁して欲しい
0777デフォルトの名無しさん
NGNGwhile (<FILE>)
{
if ($_ =~ /$match_word/)
{
chop;
print ("line $.: $_\n");
}
}
特殊変数 $. で行番号を『1,10,100…』といった形ではなく、
『001, 010, 100…』といったように桁を揃えて表示させることはできますか?
0778デフォルトの名無しさん
NGNG美しいかわかんないけどファイルハンドルのtieを使うといいかもよ。
大雑把には下の感じ。
tie *IN, 'OreFilter';
open IN, 'file.txt';
print while (<IN>);
close IN;
package OreFilter;
sub TIEHANDLE { bless \*ORE => shift }
sub OPEN { open shift, shift }
sub CLOSE { close shift }
sub READLINE
{
my $self = shift;
(my $line = <$self>) =~ s/です/やん/g;
return $line;
}
>>763
それでもいいよ。
0779デフォルトの名無しさん
NGNGスリーセブンじゃん。
printfです。
0780デフォルトの名無しさん
NGNGあるいは
printf("line %3d: %s\n", $., $_);
0781デフォルトの名無しさん
NGNGchopしてすぐにprintで"\n"って
あんたアフォ?
0782デフォルトの名無しさん
NGNGあくまでサンプルでしょ?
「マッチした単語がある行を示すプログラムの一部」
って書いてあるんだから、ここに載せるのに必要な部分だけ切り出して
動作するようにちょっと書き換えたらchopのこと忘れてたってだけじゃない?
0784デフォルトの名無しさん
NGNGmy %args;
$args{'ID'} = shift;
@{$args{'steps'}} = @_;
$args{'destroyFunction'} = sub {
my %seq_args = %{shift};
if (%talk) {
sendTalkCancel(\$remote_socket,$seq_args{'ID'}) if (binFind(\@guestID,$seq_args{'ID'}) ne '');
undef %talk;
}
}
### code b###
if ($args{'ID'} && @{$args{'steps'}} && binFind(\@guestID,$args{'ID'} ne '')){
changeDirection(getDirection(\%{$myself{'pos_to'}},\%{$guest_lut{$args{'ID'}}{'pos'}}));
sendTalk(\$remote_socket,$args{'ID'});
$timeout{'hoge'}{'time'} = time;
unshift @ai_seq, 'check';
unshift @ai_seq_args, \%args;
}
### code b end ###
}
※Active Perl v5.8.2 buld808を使用。OS WIN2K SP
このサブルーチンを組み込むとsyntax errorとなるのですが、入れ子とか問題なさそうなのでよくわからず。
問題があると思われる部分を抜き出し、 Perl -c にてチェックをすると、
Syntax error at ****** line 13,near "){" 、Syntax erroe at ****** line 14,near "}}"と表示されます。
サブルーチンを組み込んだプログラム全体でチェックした場合も同様なSyntax errorとなっております。
そこで、"code b"の部分だけ及び、"code b"の部分をコメントアウトした状態でそれぞれでチェックするとSyntax OKと表示されます。
どこを直したらいいのかわからない状態です。どうかアドバイスをお願いします。
0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNG13,14行目付近、
無名subの閉じセミコロンが無いけどそういう話じゃなくって?
0787784
NGNGアドバイスありがとう。
>786
その通りでした。申し訳ない・・・・・
コード丸写しで行けるはずで組み込んだのに
Syntax Errorがそこら中に多発して頭が固くなってたようです。
多分コードを抜き出した人が抜き出すときに、
そこらじゅう修正して、その時にみすったんでしょうね・・・・
これで呪縛から解放されます。ありがとうございました。
0788786
NGNGPerlの場合セミコロンは終端子ではなくてセパレータだから、
こういう場合、(コードBをコメントした場合)
コンパイルエラーがでないんだよね。不思議な挙動になる。
ま、でも、治ってよかったよかった。
0789786
NGNG0790デフォルトの名無しさん
NGNG<!-B->直前までの(<!-B->は含まない)出力をさせることはできますか?
0791デフォルトの名無しさん
NGNG0792β
NGNG5.8.2.808をDL&シンストールして、コマンドプロントで
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\ユーザー名>ppm
PPM - Programmer's Package Manager version 3.1.
Copyright (c) 2001 ActiveState SRL. All Rights Reserved.
Entering interactive shell. Using Term::ReadLine::Stub as readline library.
Type 'help' to get started.
ppm> install time-hires
でエンターを押すと、これ以降コマンドプロントが無反応になります。
エラーメッセージさえ出ません。
ポインターは点滅してるしスクロールもできるのですが・・・。
その他に
install io-zlib
install win32-api
install http-lite
install Win32-Sound
install getopt-long
もやりたいのですが、上と同じようになってしまいます。自分なりに調べたのですが、「Activestateにうまく繋げてないんじゃないか」
という事くらいしかわかりませんでした。
文章中に幼稚な表現が多いですがお察しください・・・。これが初歩的な質問なのかどうかさえわかりません。というかスレ違い・・・?_| ̄|○
どなたか助けてください。
0793デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNG・ローカルにパッケージをダウンロードしてきてインストール
http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/
0796デフォルトの名無しさん
NGNG「Type 'help' to get started.」と出ているだろう。
いきなり install コマンドを叩かず、PPM の設定が正しいか確認しる。
設定の意味が分からんかったらググって調べれ。
0797デフォルトの名無しさん
NGNG他プロセスに受け渡したいのですが、
なにか良い方法ってあるでしょうか?
0798デフォルトの名無しさん
NGNG0799797
NGNGサンクスです。
しかし、ファイルの中身を共有したいのではなくて
ハンドルそのものを渡したいのです。
逆になってしまいますが、ファイルハンドルから
それに結びついているファイル名を探る方法とかでもOKです。
0800797
NGNG1) あるサブルーチンがファイルハンドルを開いて返してくる
2) しかし返ってくるのがハンドルだけなのでどのファイルを開いているかわからない。
3) でも、このファイル(ハンドル)を他の独立なプロセスに渡さなきゃならない。
という状況です。
ファイルハンドルからハードリンクって作れればよいのですが。。。
0801デフォルトの名無しさん
NGNG0803デフォルトの名無しさん
NGNGSCM_RIGHTSでググれ。
0805デフォルトの名無しさん
NGNGm/<!-B->/とかしたとき、<!-B->の直前までは$`に入っているからそれを見てよね、
ってことだと思うよ。ほとんど日本語になってないけど…。
m/(.*)(<!-B->)(.*)/したときの$1とほとんど同じこと。
0806デフォルトの名無しさん
NGNGそれだけじゃん・・・
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGunless
0809デフォルトの名無しさん
NGNGあ、なんだこれ。元ネタあるんじゃん。
print $1 if (m/<!--A-->(.*)<!--B-->/s)
<!-B->って何かと思ったよ (w
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNG0812792
NGNGHTTP_proxyの設定で、ホスト名とポート番号がどうしてもわからなかったのでこの方法は諦め
手動インストールしようと思ったのですがやっぱりできませんでした。
>>796
「ppm 設定」などでググってもさっぱりでした。
ちと悔しいですが、私には無理みたいなので諦めます・・・。
レスくれた方ありがとうございました。そしてごめんなさい。
0813デフォルトの名無しさん
NGNGま、いいか
0814813
NGNG漏れって文盲。
勘違いで申し訳ないので。
812の検索条件にactiveperl足してみろ。
それでわからなきゃ知らん。
0815デフォルトの名無しさん
NGNG>>807
>>808
>>809
レスどうもでした。応急処置で >>806 さんのやり方にしました。
ただ、元データの関係ですぐに書き直さなければいけないので、
参考にさせていただきます。
0816デフォルトの名無しさん
NGNGPPMもCPANモジュールも使わないからわかんないけど
ルータのファイアウォールかなんかで
ftpをpassiveにしないと通らないとかそういうのではないの?
0817デフォルトの名無しさん
NGNGレンタルサーバなのでモジュールのインストールが出来ません
pm置くだけで使えるような奴ってないですか?
0818デフォルトの名無しさん
NGNGホームディレクトリ以下にインストールして use lib すれ
0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNG『ファイル名を指定し、endという単語を入力するまで任意の文章を入力し、
指定したファイルにその文章を書き込む』
というプログラムを作りたいのですが、どうもうまくいきません。
whileの条件文カッコに何を入れていいのかわからないです…。
以下は現在作っている途中ソースなのですが、どこがいけないのかご指摘いただけないでしょうか。
お願いいたします。
print "Please input object file name\n";
print "file_name = ";
$file_name = <STDIN>;
open FILE, "+>>$file_name";
print "\nPlease input anything writhing\n";
$writing = <STDIN>;
while ()
{
unless ($_ =~ /end/)
{
print FILE "$writing";
}
}
close FILE;
0821デフォルトの名無しさん
NGNG>>3
print "Please input object file name\n";
print "file_name = ";
# ファイルが存在しなければエラーにする
chomp(my $file_name = <STDIN>);
-f $file_name or die "No such file: $file_name\n";
# 読み込む必要は無いので + は不要。エラートラップを必ず行う。
open FILE, ">>$file_name" or die $!;
print "\nPlease input anything writhing\n";
while (my $writing = <STDIN>) {
# "end" と入力された時だけ終わるようにしないと遠藤君が困る。
$writing =~ /^end$/ and last;
print FILE $writing;
}
close FILE;
0822820
NGNG0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNG"end\n" な。
0825デフォルトの名無しさん
NGNG0826Ruby >>>>>>>>>>>>> Perl
NGNG0827デフォルトの名無しさん
NGNG821を$writing eq 'end'に書き換えて動かしてみー
0828デフォルトの名無しさん
NGNG一緒だろ?多少速いぐらいで。
0829Ruby!
NGNG0830デフォルトの名無しさん
NGNG/^end$/の意味わかってんのか?
0831デフォルトの名無しさん
NGNG初めてだし、やってみたかったんじゃない?
0832デフォルトの名無しさん
NGNG遠藤くんがかわいそうだ。
0833デフォルトの名無しさん
NGNGフォートランから来てんの?
どうでもいいけど。
0834デフォルトの名無しさん
NGNGequal を eq と略すのは辞書にも載っている一般的な書き方だけど?
test(1) なんかは Perl と逆で数値比較が eq だね。
0835デフォルトの名無しさん
NGNGつか、このばあい
$writing eq "end\n"
じゃないと駄目なんじゃないのか??
$writing =~ /^end$/で正解。(藁藁藁
0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNG> つか、このばあい
> $writing eq "end\n"
> じゃないと駄目なんじゃないのか??
\n付けたら同じにならないだろ。阿呆。
0838Ruby!!!!!!!!!!
NGNG0839デフォルトの名無しさん
NGNG/^end/
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNGrequire 'Common.pl';
????? = &Common::Parse("hoge1", \%hoge2, \&hoge3); #????は受け取りの型がよくわからず。
# 数行&Common::Parseを実行する。
hoge4(\@Files); #このsubで\@Filesを使いたい
## Common.pl ###
package Common;
sub Parse {
my ($hoge1,$hoge2,$hoge3) = @_;
$Files[Files]{'hoge1'} = $hoge1;
$Files[Files]{'hoge2'} = $hoge2;
$Files[Files]{'hoge3'} = $hoge3;
$Files++;
return ($file,$hash,$function);
}
1;
外部サブで配列の連想配列にして、戻り値をそのまま配列の連想配列で受け取りたいんですが、
うまくできずに、そのままの値が帰ってきてしまいます。
なにかいい方法はないでしょうか。
0843デフォルトの名無しさん
NGNG名前空間とサブルーチンとリファレンスについて根本から勉強し直せ。
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlmod.html
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlsub.html
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlref.html
0844デフォルトの名無しさん
NGNG$writing =~ /^end$/ は「end(?:\x0D\x0A|\x0D|\x0A)?」にマッチするので○
$writing eq "end\n" は「end\n」と等価なので○
$writing eq "end" は「end\n」と等価ではないので×
>>823の意図とミスを汲み取って脳内変換しようよ。くだらない
0845デフォルトの名無しさん
NGNG> $writing =~ /^end$/ は「end(?:\x0D\x0A|\x0D|\x0A)?」にマッチするので○
だうと。
#--- test.p ---
print /^end$/ ? "matched " : "unmatched "
for "end\x0D\x0A", "end\x0D", "end\x0A", "end\n", "end";
__END__
> perl -v
This is perl, v5.8.4 built for MSWin32-x86-multi-thread
...
> perl test.p
unmatched unmatched matched matched matched
> perl -v
This is perl, v5.8.5 built for i386-freebsd-64int
...
> perl test.p
unmatched unmatched matched matched matched
0846842
NGNG参考リンクありがと、勉強になりました。
なんせ、ユーザー定義の外部サブを作っていじるのは初めてなので、
名前空間のことを意識して組んだことなくてまったく理解してませんでした。
サブルーチン、モジュール等でググっても名前空間を利用することにどこも触れてなかったのが切ないですが、
普通は直接参照されないようにするので当たり前ですよね・・・
結局、$Files::mainに変更して不要個所の削除でうまくいきました。
自分で使うものなので、そんなのオブジェクト指向じぇねえだろってのは勘弁してください・゚・(ノД`)・゚・
0847デフォルトの名無しさん
NGNG> 標準入力で「end」と入力された時(<> が "end\n"の時)
ダウト。お前が>>824か?いい加減勘違いを認めろ。
首吊って氏んでこい。カスが。
0848デフォルトの名無しさん
NGNG残念。>821 = >824 = >845 = >848 ≠ 他 だよ。:-)
>825 と >828 と >830 と >837 にはこれをあげよう。
print join(' ', map unpack('H2', $_), split //), "\n" while <STDIN>;
完全一致の判定は >823 が言わんとしたように eq でやるべきだけど、
>821 で eq "end\n" と書かなかった事に深い意味は無い。単に
>820 がパターンマッチで判別してたから、それに付け加えただけ。
私の思慮の浅さから荒れちゃってスレの住人諸氏にはすまなく思ってる。
ごめんなさい。
0849デフォルトの名無しさん
NGNG添削をおねがいします。
----BEGIN BASE64----(weather.gz)
H4sICI/Sa0EAA3dlYXRoZXIAfVPPT9RAFD7Tv+KxVtoKtMvGENPuFkEwMYHECMYD
xU1/vGWL7UzTzgbIWv8XEi+ePBiUhKiJRiIY48WjHvWvUONMf8CuGg8zmXnvzfe+
9943lyaNQZYaEfXdyPBCYiSYRpI0yBBWiE8DtIrz6r3bprkexklUGdZura2Y5pKb
4fzVyuKGkWmKHVNLkuS7d1ahA0qfscQ0jF10WR9Tfd/tU6r7VN9JapvBj9eMkAS4
p/dZHCmWJPdSGnfdIEgxywQKTfE67rkiv07TbUWSGR31P8CQueF5CEGOr0hSNvAg
8LohCRkMJeDnmCZI1MvLixuLM9CoGDRmoDnfbGo8AoCmEIQIjRsuIZSBn/IY5C9N
kCcblpSXqD2axi7zKWFISmy5vnRgG5kq6tesMfsjyPJNJ3CWt6bbnv3u88nx6Zej
J88On79oG56tbt43tqa1tpHFbhTZbYMFYkvt6knuzOV/4hkHZ6oTTJ/84Nvxr/dP
T19qBx/0K20vtV9/O/r49tPZz8PHr76++S4sDlErKM0ogFgYI2crz4lbOW3TLDrP
qFp4eYtw4M/uJLxDjTCjs61mqyWuZWW8ETvoi4qVzsKIe2FpQQEdAAvMrleopETU
hJ1Hd/iUBYRHg33BoWVd3ESfHPJQcM7z7X+SE4H/I1dNKUMSxFyR5YDiQps826hU
Z22Cu2pZT1xZCo0M4SbPJhTRsWFMkDPSxATABgWovRdiLH3rdWPs8yYJR/6XwhQG
IpnQlkMagkSShny2Ndei0DFufkQzVMsSpyptW9LUmB75hySR+BkqBNgLCQagykLy
w2IGuQZa0ZGpuj9FhpEAMZE6M0dG1++D+gD3Myh+TvkaIOzxDKWMCILchdoBMODf
uQdy4DJ3KHcL4QLkkli59BuYrtJydQQAAA==
----END BASE64----
0850デフォルトの名無しさん
NGNGPerlで作ったCGIで、パスワード認証をしたいんですが、パスワードやユーザーIDなどは全て、データベースに
記録してあります。
データベースを読みこんで、正しいパスワードを出すことはできるのですが、HTMLページのフォームに入力した
パスワードやIDなどを読み込むことができません。
どのように、CGIの中に読み込めばいいのでしょうか?
よろしくお願いします。
0851デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/php/1049514428/
>>850
http://pc5.2ch.net/test/read.cgi/php/1095633323/
http://pc5.2ch.net/test/read.cgi/php/1097158988/
0852デフォルトの名無しさん
NGNGデーターベースは何?
環境は?
ぼやけすぎてだれも相手してくれないと思われ。
0853デフォルトの名無しさん
NGNGどもども。*他*の832=>835です。まあ、それなりに楽しめましたよ ;-)
さすがに改行には気付くよね。あはは。>>823
まあ、chompされていればね、良かったよね。ちゃんちゃん♪
ところで $writing =~ /^end$/ もSTDINから入力されるのなら
プラットフォームネイティブな改行がやって来るのだからやっぱりOKじゃないかな?
0854デフォルトの名無しさん
NGNGなんとか言うやつもいないでしょ。たぶん。
0855デフォルトの名無しさん
NGNGまんどくさいけど見てしまったからつっこみいれておくか。。。
関数にする必要が無い無意味な括りはやめれ。
関数化するならきちんとローカル化しる。
dbmopen()は速くて俺も時々使うけどデータが大きくなると
ファイルサイズが巨大になり使い物にならないぞ。
ついでにマニュアルも読め。
>Functions obsoleted in perl5
>dbmclose, dbmopen
0856デフォルトの名無しさん
NGNG\x0D\x0A|\x0D|\x0Aにマッチしていると思ってたけど
プラットフォームに依存せず\x0Dを吐くから/^end$/でもマッチしていたんですね。
ファイル操作時にプチハマリしてしまいそうな事例ですね。勉強になりました。
>>847 頭ごなしに否定しないで自分で検証してみては?
反証をあげずに汚い言葉を吐いていても誰にも相手にしてもらえませんよ。
もし貴方が正しいことを言っているのなら大変興味のある事ですので v^^;v
0857デフォルトの名無しさん
NGNGうーん、それはちょっと語弊のある言い方だね。
Windows 上の perl でも内部処理的には改行コードを "\n" eq "\x0A" で
扱っていて、正規表現の $ は文字列の末尾か "\x0A" にマッチする。
改行コードの変換が行われているのは入出力の境界で、例えば以下の
ように作った test.txt は "\x0D\x0A\x0D\x0A" になっているし、
> perl -e "open FILE, '>./test.txt' and print FILE qq/\x0A\n/"
以下のスクリプトの出力は "0a0a0d0a0d0a - 0,2,4" になる。
open FILE, '<./test.txt' or die $!;
print map unpack('H2', $_), split // for <FILE>, "\x0D\x0A\r\n";
print ' - ';
print join ',', "_0_\x0A_1_\x0D_2_\n_3_\r\n_4_" =~ /_(\d)_$/gm;
変にバイナリ値を意識して \x0A だ \r\n だと書くから混乱するわけで、
テキストファイルや標準入出力を扱う時は素直に "\n" とすれば perl が
良きに計らってくれる。あと $ は「行末」にマッチするパターンだから、
「文字列の末尾」にマッチさせたい時は \z を使う癖を付けるといいかもね。
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNGソースで指定している配列とは違う配列にpushされてたり、
今までのバージョンでは起こらなかった問題が発生してしまっています。
perl5.8以降の仕様変更が原因なのは間違いないのですが、どこを修正すればいいのか全く分かりません。
何か心当たりがある方はいらっしゃらないでしょうか?
宜しくお願いします。
0860デフォルトの名無しさん
NGNGpubmedをscrapingしようと、以下のスクリプトを作ってみました。
#!/usr/bin/perl
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
$mech->get('http://www.ncbi.nlm.nih.gov/entrez/query.fcgi');
$mech->submit_form(
form_number => 1,
fields => {term => 'test',},
);
$mech->submit_form(
form_number => 1,
fields => {dopt1 => 'XML',},
button => 'Display',
);
print $mech->content;
formに単語を入れて、表示でXMLをselect、Displayボタンを押してXML表示が行いたいんです。
Display ボタンを押すのが上手く行きません。HTMLソースは
<input name="Display" onClick="Go('Display')" type="BUTTON" VALUE="Display">
なので、javascriptの部分で駄目なんだろうと思っていますが、代わりの手段が思いつきません。
ご存知の方がいらっしゃいましたら、ご教示の程お願いいたします。
0861デフォルトの名無しさん
NGNGcpanでモジュールの更新はしましたか?
やってなかったらやってみると良いかも。
0862859
NGNG有難うございます。
Active perl5.8.4をインストールしたのですが、cpan.pmもセットになってます。
ということはcpan.pmも5.8に対応したものに更新されてるはずですが、
それとは別に皆さん手動で更新してるのでしょうか?
0863七誌
NGNGTerapadにプラグをいれるののはちょっと使いにくいw
asperl.のようなGUIでの実行、PerlEditのような利便さをかねそなえたものがあるといいんですが・・・ (フリーで
知っていらっしゃる方は教えてくださいまし
0864デフォルトの名無しさん
NGNG意味不明
0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNG「perl のコンパイル」とエディタ って事は、Cの開発環境が欲しいって事なんじゃないか?
# んなわけねー
0867デフォルトの名無しさん
NGNG"D:\Perl\bin\perl" %1
pause>nul
というバッチファイルを作ってemeditorの外部ツールに登録し
CTRL+spaceに割り当てて使ってる。
@echo off
"D:\Perl\bin\perl" %1 > %2
%2
exit;
とかにすれば出力をテキストファイルで見ることが出来る
0868デフォルトの名無しさん
NGNG初心者なので教えてください。
0869デフォルトの名無しさん
NGNG話はそれからだ
0870デフォルトの名無しさん
NGNGわかりました
0871デフォルトの名無しさん
NGNG「初心者」だったら教えてもらえると思ってんだろうね
0872デフォルトの名無しさん
NGNGEPICは?使ったこと無いけど。
ttp://e-p-i-c.sourceforge.net/images/screenshots/epic_on_windowsxp.png
0873デフォルトの名無しさん
NGNGすまんけど、ほんとに1からわからんのよ。
用途は、ルーチンみたいな感じで多少の計算やら、画像判定なんかをしつつ、テキストなんかに入力したい。
検索で引っかかるのはweb用途ばっかりで、よくわからんのよ。
よかったらサイトなんかでもいいんで教えて下さい。
0874デフォルトの名無しさん
NGNG最初から他人を頼ってるようじゃ先が思いやられるわ
頼むからもうここで質問しないでくれるか
0875デフォルトの名無しさん
NGNG質問スレにいる必要あるのか?プ
0876Ruby >>>>>> Perl
NGNG0877デフォルトの名無しさん
NGNG遅レス。
ダブルクォート中の@の解釈の仕方 "@hoge" が
どっかで変わったとなんかのデルタで読んだ記憶があるけど
どのperldeltaだったかは失念。
リファレンスのばあいは関係ないかな? 役たたねぇ〜。スマン。
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNG0880デフォルトの名無しさん
NGNGPerl4 → Perl5 で、常に配列変数として展開するよう変更されている。
…10年ほど前の話だけどな。
0881デフォルトの名無しさん
NGNG最近-wはしないな。use warningsがアホみたいに便利だ。ちとメモリ食うのが難点だが…。
use strictはデフォ。当たり前。
0882デフォルトの名無しさん
NGNGども。うん、それはそうなんだけど…
探したら5.8.0(5.6.1?)のperldeltaで
>Arrays now always interpolate into double-quoted strings [561]
とあったので。いままで "@hoge"と書くとエラーで落とされてたのが
そうならなくなったらしい。
まあ、でも症状的に逆だし情報量少ないし、これが原因だかわかんないけどね (^^;
例えばなにかトチ狂った対処して $foo = "\@bar" とするつもりで
$foo = \@bar とすれば ARRAY(0x1234..)とか出るじゃん。(w
>ソースで指定している配列とは違う配列にpushされてたり、
どっか型グロブで変数エイリアスしてたり
ソフトリファレンス使っているところないっすか?
いずれにしろフツーの書きかたしてりゃ起きないことだから
878氏のいうように-wとstrictしなさい >>880
0883デフォルトの名無しさん
NGNGopen my $foo = undef, "foo.txt";
print <$foo>;
close $foo;
とすると $fooがファイルハンドルとして通用することに気付いたのですが
これってなぜなんでしょうか!?
ちなみに use strictして open my $foo = 1, "foo.txt";
だとエラーになるのですが $foo = undefだとエラーになりません。
不思議。
0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNG早速のご回答ありがとうございます。
そっか、そうなのか…。
ただ、use strictしていて(ソフトリファレンス禁止?)も
値が undefのばあいは通ってしまうのですよ。
この場合ってなにか違うのですかね?
0886デフォルトの名無しさん
NGNGそういうモジュール見当たらないっす・・・
0887デフォルトの名無しさん
NGNGmount
0888デフォルトの名無しさん
NGNGいっそのこと「ワンライナー以外では use strict がデフォ」とかして欲しいですな。
0889デフォルトの名無しさん
NGNGかるく検索してみたら Filesys-SmbClient つうのが引っかかったけど。
0890デフォルトの名無しさん
NGNG5.6.0からの仕様で、openの第一引数に未初期化(実質的にundefで初期化)の変数を指定することで
無名のファイルハンドルを作成できるようになった。
これはこういう仕様。ソフトリファレンスとか関係ない。
0891デフォルトの名無しさん
NGNGperldoc -f openより:
If FILEHANDLE is an undefined scalar variable (or array or hash
element) the variable is assigned a reference to a new anony-
mous filehandle, otherwise if FILEHANDLE is an expression, its
value is used as the name of the real filehandle wanted. (This
is considered a symbolic reference, so "use strict 'refs'"
should not be in effect.)
undefかそうでないかで動作が違うのはそういう仕様だってことだ。
0892デフォルトの名無しさん
NGNGありがとうございます。
未初期化の場合だけの特例なのですね。勉強になります。
ちなみにいくつか試したのですが
open my $foo = undef, "foo.txt"; --> OK
open local $main::foo = undef, "foo.txt"; -->OK
open our $foo = undef, "foo.txt"; --> NG(何も表示されない)
でした。ourは別モノらしい。
0893デフォルトの名無しさん
NGNGふむふむ。openでそうした場合は無名のハンドルができるってことですね。
そうじゃなかったらソフトリファレンスつかってよ、と。
そうすると無名subでもいけるかな?
ちょっとやってみます。
サンクスです。
0895デフォルトの名無しさん
NGNGん?ourもいけたが…。当方version 5.8.4
0896デフォルトの名無しさん
NGNGprint "1. 処理1\n";
print "2. 処理2\n";
print "3. 処理3\n";
chomp ($process = <STDIN>);
if ($process == 1){
do &func1;
}
elsif ($process == 2){
do &func2;
}
elsif ($process == 3){
do &func3;
}
sub func1{
}
といったようなプログラムを実行すると、
Perl v49.0.0 required--this is only v5.6.1, stopped at 041014.pl line 10.
というメッセージが表示されます。
処理は一応キチンと実行されているのですが、原因が何なのかわかりません。
何がいけないのか教えていただけないでしょうか?
:環境:
perl v5.6.1 built for i386-freebsd です
0898デフォルトの名無しさん
NGNG041014.pl の 10 行目に require 〜 か use 〜 があるのでそれを削除。
0899デフォルトの名無しさん
NGNG0900デフォルトの名無しさん
NGNGdo サブルーチン
ってかなり昔の書き方じゃなかった毛?
doを取れば動くよろし。
0901デフォルトの名無しさん
NGNGバージョンチェック
0902デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNGPerl5 からは使わないよう推奨されているが、use strict & use warnings 下
でも & 付きで呼んだ場合は何のエラーも吐かずに動くよ。
0908デフォルトの名無しさん
NGNG�@open READ, "読み込みファイル";
�Aマッチングさせる文字を入力
�Bopen WRITE, ">>書き込み先のファイル";
�Cwhile (my $line = <READ>)
{
if ($line =~ /マッチングさせる文字列/ or last)
{
print WRITE "$line";
}
}
といったように、ファイルハンドルをそれぞれ読み取りファイル、書き込みファイルと用意していますが、
このようなやり方でいいのでしょうか?
目的の処理はこの流れでできたのですが、ファイルハンドルをわざわざ2つ用意しなくても
このような処理をさせることはできるのでしょうか?
0909デフォルトの名無しさん
NGNG0910908
NGNG0911デフォルトの名無しさん
NGNGhttp://www.widestudio.org/
0912デフォルトの名無しさん
NGNG便利だね。早く5.0系から完全に移行したい。
0913デフォルトの名無しさん
NGNGC++でVS+boost
でいけよ
0914デフォルトの名無しさん
NGNGPerlでPerlMagickを使ってプログラムを書いていたのですが 実行すると
Can't use string ("/root/pic/screen.jpeg") as an ARRAY ref while "strict refs" in use at ./x.pl line 22.
と 言われてしまいます
22行目は
my $imagetype = $file->[3]->Get('format');
となっています
どういうことなのでしょうか?
->[3]->と言うのは調べていてこう記述してあったのでうつしました
これを抜くと
Can't call method "Get" without a package or object reference at ./x.pl line 22.
こう言われます
すいませんが教えてくださいお願いします
0915デフォルトの名無しさん
NGNG> ->[3]->と言うのは調べていてこう記述してあったのでうつしました
自分で理解できてる範囲でプログラミングをしましょう
エラーメッセージの英語くらい読めるようになりましょう
あなたはまずそこから始めるべきです
0916デフォルトの名無しさん
NGNGわからんのならレスしたんなよ
0917デフォルトの名無しさん
NGNG配列のリファレンスが期待されているのに
普通の文字列(ファイル名)が入ってるから。
PerlMagick使ったことないからわからんけど、
どっかで、 $obj = new HogeHoge($file) みたいに
するんじゃないの?
んでそれを $obj->Get('format')みたいにする。違う?
0918デフォルトの名無しさん
NGNGそれで>>917さんの書き込みを見たのですが
newというのは何なのでしょうか?
そのあとのHogeHogeというものもわかりません
また、配列のリファレンスとは配列を示すアドレスですよね?
どこに配列があるのでしょうか?
すいませんが教えてくださいお願いします
0919デフォルトの名無しさん
NGNG今勉強してるテキストひと通りマスターし終わってからまたおいで。
0920918
NGNG本は読んでません
ネット上でみたりココ見たりしてやってます
0921デフォルトの名無しさん
NGNGpackage HogeHogeFile;
sub new { return bless []; }
:
:
以下略
package main;
$file = new HogeHogeFile();
になってるんだろうな。そしてHogeHogeFileの中の人の第4要素がまた
なにかのオブジェクトで、Getというメソッドを持ってるんだろう。
0922デフォルトの名無しさん
NGNGわからない言葉があったらまず検索
0923918
NGNGperl new
とかで検索したのですが 違うのが引っかかりすぎてみつけれませんでした
ですので、ここできかさせていただきました
0924デフォルトの名無しさん
NGNGじゃあこれからも検索しづらいものがあったら片っ端からここに質問にくるのかい?
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNGそもそもnewがわからないのでperl newでぐぐるというのを見れば
ここで教えてどうにかなるレベルにすら到達してないのがわかると
思うが。うざいのは確かだけどねぇ...
0927デフォルトの名無しさん
NGNGmy $varはそもそもundefなんだから、わざわざ=undefする必要ないのでは?
open my $fh, $file
で充分。
0928デフォルトの名無しさん
NGNGネットワーク系のプログラムを勉強することになりました。
PHPとかASPとかpealとかありますが、どれをやるべきでしょうか?
とありあえずPealをやろうとおもってるのですが?
主流になっていくやつをやりたいので、是非教えてください
0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&ie=Shift_JIS&q=peal%8C%BE%8C%EA&lr=
0933デフォルトの名無しさん
NGNG~~~~~~~~~~~~~~~~~~
本が出てるらしい
0934892
NGNGそうですね。このシンタクスを実用化するなら
open my $fh, $file ということですね。
書いた時点で my $fhが何を生成しているのかよく分からんかったので
undefとか1とか突っ込んでた名残です。
なんか、perlopentut見たらいろいろ書いてありました
もうファイルハンドルはいらない♪!?
0935デフォルトの名無しさん
NGNGのほうがカコイイよ
0936918
NGNG0937デフォルトの名無しさん
NGNG> そのあとのHogeHogeというものもわかりません
http://www.google.com/search?num=50&lr=lang_ja&q=%70%65%72%6C%20%E3%82%AF%E3%83%A9%E3%82%B9
0938デフォルトの名無しさん
NGNGもしかしたらnewはクラスHogeHogeのコンストラクタです。
クラスHogeHogeは「ほげほげ」と読みます。
$fileか$file->[3]にはきっと'/root/pic/screen.jpeg'という文字列が入っていて
これはblessされたオブジェクトじゃないのでGetを呼び出せず
pealはエラーを吐き出しました。
ちなみにrootでこういった作業するのはセキュリティ上望ましくないので
一般ユーザでのプログラミングをおすすめします。
0939デフォルトの名無しさん
NGNGrenameなんかだと rename $old_name => $new_name でストリーム表現できてよいが、
openの場合ファイルをハンドルに結合するので、ストリーム的には open my $fh <= $file と
書きたいところ。なので => ではダサイということに君もそのうち気付くだろう。
0940デフォルトの名無しさん
NGNG参照, 被参照の関係を考えると => でいいんじゃないの?
hash 使った事ある?
0941デフォルトの名無しさん
NGNGたとえば
my $obj;
if (/condition/) {
$obj = Class->new(ARG_0 => "a", ARG_1 => "b", ARG_2 => "c",);
}
else {
$obj = Class->new(ARG_0 => "a", ARG_1 => "b",);
}
という具合の書き方をいつもしているのですが
なんだか重複した記述が多いし、もうちょっとスマートな書き方がないものかと
いつもうんざりしています。
こういう場合の定石パターンってなにかあるのでしょうか。
皆さんどうコーディングされてます?
0942914
NGNG>>915
えと 3つめの要素を返す? 見たいな感じでよろしいのでしょうか?
エラーメッセージも読んではいるのですが
その->[3]->を抜いた方が正しいとは思うのですが それでもエラーなので・・
>>917
まさにそういう風にしています
my $dir=$ARGV[0];
$flyfile=readdir(DIR);
my $file="$dir$flyfile";
のような感じでしています
DIRはopendirしたディレクトリです
これで $fileにはあるディレクトリの1つのファイルのパスが入るようにしています
省きましたが$fileがディレクトリか違うかは判断した後に
my $imagetype = $file->Get('format')
をしています
私もPerlをやり始め手間もないので分からないのですが
$obj=new HogeHoge($file);
とはどういう意味なのでしょうか?
&fileを引数にHogeHogeを作って それを$objにいれる・・
すいませんが教えてくださいお願いします
0943デフォルトの名無しさん
NGNGeg. open $fh => $file ??
!☆???!!
0944デフォルトの名無しさん
NGNG$fh->open($file);
is so cool, so sweet, so sexy.
0945デフォルトの名無しさん
NGNGインスタンスってなんですか?
0946デフォルトの名無しさん
NGNG0947デフォルトの名無しさん
NGNGi agree you
but calling open() method from undefined varable is too strange :)
0948デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNGundef->open() is Black Hole. It's so dangerous.
0951デフォルトの名無しさん
NGNG{
chomp (my $file_name = <STDIN>);
-f $file_name or die "ファイルが見つかりません\n";
open FILE, "<$file_name" or die $!;
print "\n検索対象文字列を入力してください\n";
print "文字列 = ";
chomp (my $moji = <STDIN>);
while (my $line = <FILE>)
{
if ($line =~ /$moji/)
{
print "$line";
}
}
close FILE;
}
というのは指定したファイルから任意の単語がある行を抜き出して表示する、
というプログラムなのですが、実行のときに、目的のファイルから
"perl" もしくは "Perl" という単語がある行を表示させたい場合、
$word を入力するときに [Pp]erl と入力すればできるように、
正規表現で $word を指定できますよね。
このとき例えば "perl" を含む行以外を表示させる$wordの指定の仕方ってあるのでしょうか?
この場合はプログラムを書き直すしか方法はないのでしょうか?
0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNGperlを含まなかったら表示とすればよい
0954デフォルトの名無しさん
NGNGuse IO::Fileなり use FileHandle しろよ ^^;)
0955デフォルトの名無しさん
NGNG以下に、質問。
use strict;
my $family_name{"fred"} = "filntstone";
my $family_name{"barney"} = "ru;
foreach $person ( qw/ barney fred /) {
print "I've heard of $person $family_name{$person}.\n";
}
を実行すると、
syntax error at ./ex5_1.pl line 3, near "$family_name{"
Execution of ./ex5_1.pl aborted due to compilation errors.
になってしまいます。
なぜですか?
0956デフォルトの名無しさん
NGNG3行めかな?
0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNG後の”が、ねーぞコラ、ぐらい云えば?質問スレなんだらよ。
0959デフォルトの名無しさん
NGNG>>942にも答えてやれよ
0961デフォルトの名無しさん
NGNGはいよ
http://www.din.or.jp/~ohzaki/regex.htm#Without
0962デフォルトの名無しさん
NGNGここに結構よさそうな解説がありますよ
ttp://www.ss.iij4u.or.jp/~somali/web/_perlmagick_ref.html
>&fileを引数にHogeHogeを作って それを$objにいれる・・
&fileじゃなくて$fileだけど、その通りです。
0963デフォルトの名無しさん
NGNG"ru;が"ru";だな。
それ以前に、
my %family_name;
$family_name{"fred"} = "filntstone";
$family_name{"barney"} = "ru;
か
my %family_name =
(
"fred"=>"filntstone",
"barney"=>"ru"
);
ぐらい書いてくれよ(´Д`;
0964デフォルトの名無しさん
NGNGru が何を意味しているのか激しく気になる。
ルテニウムか?
それから for $person ( qw/ barney fred /) {
と書けるやつはエラーの意味くらい分かると、なんとなく思うぞ。俺は957ではないが。
0965sage
NGNGありがとうございます
一応そこを見てやってみたのですが・・
??もう一度見直してみます
どうもすいませんでした
&fileはタイプミスですすいません
0966945
NGNG検索して見てもいまいちピンと来る説明がありません
わかりやすく説明していただけないでしょうか?
あと->はリダイレクトの逆と考えたらいいのでしょうか?
0967965
NGNGすいません 914でした
0969デフォルトの名無しさん
NGNGImage::Magickを使ったことないから全然間違ったこというかもしれないけど
配列がうんぬん、と絡んでくるのは $image = Image::Magick->newで作った
一つの $imageオブジェクトに複数の画像をReadで読み込めるからじゃないのかな?
Photoshopとか使ったことあれば、「レイヤー」を想像すれば(Gimpもそうか?)
何で配列がでてくるのか分かるんじゃないかと思うよ。
だからその部分でエラーが出てくるのは、きっと読み込み方を間違ってるんじゃないか
と想像します。多分ね。
それから -> はリダイレクトではなくて、->の左にある変数が保持している
サブルーチンとかハッシュや配列のフィールドを呼び出す演算子みたいなものです。
というか、リダイレクトの逆っていったいなんだよ? (w
0970デフォルトの名無しさん
NGNGいやだからお前のPerlの理解はPerlMagickを使うには
まるで不足しているのでまともな本読んで勉強して
からにしろというのが回答。ここでちょこちょこやり
とりしてなんとかなるレベルじゃない。
0972デフォルトの名無しさん
NGNG>>914とほかの初心者とが入り混じりすぎてごっちゃになってんな
0973デフォルトの名無しさん
NGNGifdefを適切に取り除きたいのですがどんな感じで書けばいいですかね?
#cat define.h
`define a
`define b
`define c
#cat hoge.txt
q
w
`ifdef a
e
r
`ifdef b
t
`else
y
`ifdef c
u
`endif
i
`endif
o
else
s
`endif
0974デフォルトの名無しさん
NGNG0975デフォルトの名無しさん
NGNG激しくモジュールがありそうな悪寒。
が、一応作るのならこんな感じか。
ifdef を見つけた時点でスタックに対象の define が ON 状態であることを積む。
else を見つけた時点でスタックトップの define が OFF 状態であるように反転する。
endif を見つけた時点でスタックトップを取り除く。
スタックが変更されるたびに define されている内容と照合して出力するか否かを決定する。
で、エラーチェック等なし、条件チェックをスタック変更時でなく毎回やる、で実装すると↓
あと、hoge.txt で最後の else に ` つけ忘れてるよ。
open DEFINE, 'define.h';
while(<DEFINE>) {
$def{$1}=1 if /^`define\s+(\w+)/;
}
close DEFINE;
open TEXT, 'hoge.txt';
$flag = 1;
while(<TEXT>) {
if(/^`ifdef\s+(\w+)/) {
push @stack, [$1, 1];
} elsif(/^`else$/) {
$stack[$#stack][1]=0;
} elsif(/^`endif$/) {
pop @stack;
} elsif($flag) {
print;
}
$flag = not map { $def{$_->[0]} ^ $_->[1] ? 1 : () } @stack;
}
close TEXT
0976デフォルトの名無しさん
NGNG判別部分はこれだけで良かった_| ̄|○
$flag = not grep { $def{$_->[0]} ^ $_->[1] } @stack;
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNGでいいような。全然perlじゃないなこれ...
0979デフォルトの名無しさん
NGNGmy %family_name =
(
"fred"=>"filntstone",
"barney"=>"ru"
);
より
my %family_name =
(
fred=>'filntstone',
barney=>'ru'
);
のがベターかな
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNGmy %family_name =
(
fred=>'filntstone',
barney=>'ru' ,
);
の方がベター
あと、だれか>>860にレスしてやれよ。漏れは質問の意味すら良く分からんが
0982デフォルトの名無しさん
NGNGこれのポイントというかベターな理由はどこなんでしょうか?
ポインタだけでも構いませんのでお願いします。
0983デフォルトの名無しさん
NGNG>>860
たぶんどっかのformから自動的に結果を得たいのだろうが、そのformから
query出すところがjavascriptで書いてあるので、どういうパラメタを
投げればいいのかわからないという問題と思われる。perlであるかどうか
は関係ないのでスレ違い。
0984デフォルトの名無しさん
NGNG> これのポイントというかベターな理由はどこなんでしょうか?
> ポインタだけでも構いませんのでお願いします。
必須でない物、展開されない物には「"」を使うなって事かと
ところで
>>981
これのポイントというかベターな理由はどこなんでしょうか?
ポインタだけでも構いませんのでお願いします。
0985デフォルトの名無しさん
NGNG誰も答えてくれないからって自演するなよ・・・
しかもそれがベターって・・・w
0986デフォルトの名無しさん
NGNGエントリ追加したときに , が無いって怒られるエラーを未然に防ぐ
ブロック末尾の文にもちゃんと ; 付けるのと同じ理由
0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG人にも使ってもらえるように VisualC 等でGUIインターフェスの
アプリにしようと思うのですが、VisualC等で Perl の機能を実現
したりあるいはスクリプトをそのまま使う方法というのはないのでしょうか?
Perl/TKの存在を知りましたがPerlをインストールしないと動かないようなので・・・
0990デフォルトの名無しさん
NGNGそんな事知らない貴方が作ったソフトは、誰も使用しませんよ^^
PCの基礎を学んだほうが良いんじゃないんですか?
まだ遅くないと思いますよ?そのレベルじゃ・・やb(ry
0991デフォルトの名無しさん
NGNGシェアウェアですが。
0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994859
NGNGレス有難うございます。
""の中にあった@を、""使わないような処理に変更する試みは既に施していましたが、
エラーは変わらなかったです。
また、型ブログもリファレンスも使用してないです。
5.6で問題なく動いていたのに何でだろう・・と思い悩んでおります。
しばらく自サーバを5.6に戻すしか解決策が見当たりませんが、
いつかレンタルサーバにUPしたいと考えておりまして、
でもレンタルサーバは大体5.8なんですよね・・。
他に私と同じような方がいないということは、やはり私のスクリプトミスなのでしょうね。。
もうしばらく考えてみます。アドバイス感謝いたします。
0995デフォルトの名無しさん
NGNGガキが馴れ馴れしくしてんじゃねーよ
0996デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1097547110/
0997デフォルトの名無しさん
NGNGとりあえずあんたは家族とセックスでもしててください
0998デフォルトの名無しさん
NGNGいいんですがこんなこのスレッド一回も見たことない人にとられて?
もうちょっとがんばってくださいよ
0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNGもらっちゃいますよ?
これの書きこみが成功したら1000ですよ?
まあ私Perl書けるしある程度なら質問も答えられるので
もしこれが1001だったら24時間常駐して解答係りになりますよ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。