トップページ⇒php
1001コメント332KB

【Perl】初心者コーナーPart9

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/12/28 23:21ID:SPLRvqQi
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。

参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけど、なんか質問ある?part5】
http://pc.2ch.net/test/read.cgi/php/1009331505/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/

過去ログ、その他の役立ち情報は>>2-10を見よう。
0159名無しさん@お腹いっぱい。02/01/13 11:49ID:???
>>158
それは、requireの仕様。
# てか、requireの使い方を激しく勘違いしているような、、、
とりあえず、perldoc -f requireしてみること!
158の知りたいことが全て解説されている。
016015802/01/13 11:53ID:0YPd0etQ
どうも有難う御座います。
requireの使い方は人のCGIを見て使い方を自分の中で勝手に認識したので…。

perldoc -f requireやってみます。
というかどこで(?)やればいいのかも解らないのでとりあえず調べてきます。

それでは。
0161 02/01/13 12:09ID:???
>>160
> というかどこで(?)やればいいのかも解らないので
コマンドラインから
0162名無しさん@お腹いっぱい。02/01/13 13:35ID:2oX90M6u
lolipop.jpの鯖にapeboard+を置いたんですけど、
505で動きません。
アスキーモードで転送したし、
Perlのパスは指定のものに変更したし、
パーミッションも755にしているのに動きません。
何故かしらー??
どころか、テストのために同じ状態でUPした、
Hello World!クラスのcgiも動かないのです。
鯖が悪いのか?FTPソフト(FFFTP)が悪いのか?
お分かりの方おりましたらお教えください。
0163名無しさん@お腹いっぱい。02/01/13 13:48ID:???
POSIXモジュールを使っている人はいる?
使いまくると見づらい?
例えば、$ENV{'QUERY_STRING'}を参照すればいいものをPOSIX::getenv("QUERY_STRING")とやるということ。
0164名無しさん@お腹いっぱい。02/01/13 15:45ID:???
>>162
Perlのエラーログ見ました?
0165名無しさん@お腹いっぱい。02/01/13 15:53ID:iK+xIF0s
>>164
httpdのログだろ?
0166名無しさん@お腹いっぱい。02/01/13 15:57ID:???
るせヴォケ
0167名無しさん@お腹いっぱい。02/01/13 16:06ID:???
>>166
横から煽るな。
0168名無しさん@お腹いっぱい。02/01/13 16:14ID:???
>>162
CGIだけど、なんか質問ある?Part 5
http://pc.2ch.net/test/read.cgi/php/1009331505/
016915602/01/13 19:36ID:ZxK7891W
すいません、>>157のみちのくの意味がわかりません。
もしよろしければ、もう少し詳しいことを教えてください。
0170名無しさん@お腹いっぱい。02/01/13 20:05ID:???
>>169
http://www.google.co.jp/search?q=%82%DD%82%BF%82%CC%82%AD%81@%8Cf%8E%A6%94%C2%81@cgi&hl=ja&lr=
017115602/01/13 21:05ID:ZxK7891W
>>170
申し訳ない。わざわざ有難うございます。
0172名無しウィルス ◆UETvirus 02/01/13 21:26ID:hUoFkGoF
2ch猛威を振るう宣伝業者の書き込みを撲滅すべく活動し
ております。Q2接続プログラムの解析、関係団体へのメール等、ランキングクリックに
よる宣伝業者へのアクセス数減少と人手はまだまだ必要です。
WEBプログラム板の皆さんの技術を貸していただけないでしょうか。

下記のスレをご覧の上で、ご協力戴ければ幸いです。
「■ 悪徳宣伝業者の画像や動画をばらまくスレ2 ■」
http://wow.bbspink.com/test/read.cgi/ascii/1010876229/
0173名無しさん@お腹いっぱい。02/01/14 15:38ID:xszmZ/SM
Perlでfork関数を使用した際、
子プロセスがいくつ生成されているか、
親プロセスが知るにはどうすれば良いのでしょうか?
具体的にはHTTPのGETをしたりするスクリプトで
子プロセスの数を(例えば3個までとかに)制限したい
ということなんですけど。
0174perl初心者02/01/14 19:00ID:n0YvEQb/
現在perlを始めたばかりのプログラミング初心者です。
HC Editorというフリーのテキストエディエターで
perlを書いているんですが、保存時の漢字コードをEUCにすると
なぜか保存して、再び読み出したときに中身が文字化けしてます・・・
OSはWINDOWSです、よろしくお願いします。
0175名無しさん@お腹いっぱい。02/01/14 19:05ID:???
>174
なぜその製作者のサイトで聞かない?
それが一番確実なはずだけど。
0176 02/01/14 19:48ID:???
>>174
全然Perlと関係ないぞ、それ
0177perl初心者02/01/14 20:10ID:RxHccNR/
そっか(汗
そーします。
0178名無しさん@お腹いっぱい。02/01/14 23:46ID:zLD178tU
パッケージ関数bar を標準で入っている関数die の別名として使おうとして
package foo;
*bar = \&CORE::die;
bar("hoge");
と書いてみましたが,そんな関数知らんと怒られてうまくいきません。
どうやればできますか?
0179名無しさん@お腹いっぱい。02/01/14 23:57ID:x1aEi06n
スレ違いだけど妥当なスレが見当たらなかったので
書き込ませてください。
CGIかうんた設置を試みてるのですが、どうもうまくいきません。
FFFTPを最近使い始めたのですが、転送する前・・・つまり
こちら側にあるファイルのサイズと、鯖に転送したファイルのサイズが
微妙に違うのです。
20000バイトなら、鯖のは19621バイトといったふうに。
こういうのって、CGIの誤作動に繋がりますか?
何度転送してもそのようなサイズになってしまいます。
0180 02/01/15 00:09ID:???
>>179
もしかして広告とか?

でも、やっぱりここで訊くのは間違ってる
0181名無しさん@お腹いっぱい。02/01/15 00:11ID:???
>>179
それはFTP転送がASCIIモードだと改行コード変換が行われるから(多分)。
WindowsだとCR/LFで改行だけど、他のOSだとLFだけだったり。
つまり、改行一つにつき1バイト分、サイズが少なくなる勘定。

ちなみにCGI関係は
http://pc.2ch.net/test/read.cgi/php/1009331505/
0182名無しさん@お腹いっぱい。02/01/15 00:11ID:???
お邪魔してしまってすみませんでした<(__)>
他の板で聞いてみます

広告とは?
>>179
0183 02/01/15 00:16ID:???
>>182
> 広告とは?
ゴメソ。適当に言っただけ。忘れて下さい。
0184名無しさん@お腹いっぱい。02/01/15 08:49ID:DyvaVHMP
このリファレンスの使い方って、マズいですか?
(sub内のmyな変数のリファレンスを返却)

sub foo {
my %ret;
$ret{"bar"} = "baz";
\%ret;
}

my $r = &foo();
print $$r{"bar"} . "\n";
0185名無しさん@お腹いっぱい。02/01/15 10:28ID:mJdfZzdE
>184
結果はどうなの?
最後の一行を
print $r->{"bar"}."\n";
でどうよ。
0186名無しさん@お腹いっぱい。02/01/15 11:29ID:???
( ´ ・∀・`) へー
018718502/01/15 13:37ID:mJdfZzdE
>184
なんだ。そのままで動くやん。
「sub内でのmy変数のリファレンスを返す」こと自体は全然マズくないよ。
018818402/01/15 15:41ID:DyvaVHMP
>187
>「sub内でのmy変数のリファレンスを返す」こと自体は全然マズくないよ。
ああ、そうなんだ。ありがとう。
0189名無しさん@お腹いっぱい。02/01/16 02:09ID:JQVH7PKS
ふーむ。sub呼ぶ度にheapに%retが確保されるようなイメージですかね。

sub foo {
my ($k, $v) = @_;
my %ret;
$ret{$k} = $v;
\%ret;
}

my $r1 = &foo('key1', 'var1');
print $r1 . "\n";
print $$r1{"key1"} . "\n";

my $r2 = &foo('key2', 'var2');
print $r2 . "\n";
print $$r2{"key2"} . "\n";

print $r1 . "\n";
print $$r1{"key2"} . "\n";

$ ./x.pl
HASH(0x8105ce4)
var1
HASH(0x80f857c)
var2
HASH(0x8105ce4)

$
0190102再びです。02/01/16 10:23ID:MJHKAqJj
どうも、以前にも質問しました。
時間が空いたのでもう一度書き直してみましたが、動作しません。
出席簿みたいな感じのCGIです、
少しチェックして欲しいです。


require'jcode.pl';
require'cgi-lib.pl';

&ReadParse(*answer);

$name="$answer{'name'}";

open(DATA,">>./log.dat");
while(@dname=<DATA>){
foreach $key(@dname){
($namelist,$count)=split(/,/,$key);
if($namelist eq $name){
++$count;
}
}
print DATA "$name,$count";
0191102再びです。02/01/16 10:24ID:MJHKAqJj
>>102 です。
0192名無しさん@お腹いっぱい。02/01/16 10:52ID:???
openの後が意味不明、何がしたいのか説明してみてくれる?
0193102再びです。02/01/16 10:57ID:MJHKAqJj
(名前、カウント数)
でデータを保存したいのです。
それを参照して同じ名前があったらカウント数増加、
なかったら新規で作成という感じにしたいのです。
0194名無しさん@お腹いっぱい。02/01/16 11:04ID:???
>open(DATA,">>./log.dat");
追記モードで開いてもポインタがファイルの終端を指しているから
データの読み込みは無理。
SEEKするか?

>while(@dname=<DATA>){
↑これは
>@dname = <DATA>;
こうするか
>while(<DATA>){
こうしなさい。
どちらにしても、追記モードでオープンしてるんじゃ無理。
0195102再びです。02/01/16 11:08ID:MJHKAqJj
おぉ、分かりました。
open(DATA,"+>./log.dat");
にして入出力用にすればいいのかな
もうちょっとのところまできてるんでしょうか?
とりあえずもうちょっと修行します。
また、報告させていただきます。
0196名無しさん@お腹いっぱい。02/01/16 11:11ID:???
>SEEKするか?
( ´ ・∀・`) へー
0197名無しさん@お腹いっぱい。02/01/16 11:16ID:???
>196
追記モードだとSEEKでも前に戻れなかったね。
スマソ。

>195
とりあえず書いてみろよ。
ローカルでテストする分には誰も文句言わないから。
0198超初心者02/01/16 12:10ID:zfCnc17S
Grepについて教えてください

open IN, "highschool.csv";
while ($line = <IN>){
if ($line eq '') { print "(空行)<hr>\n"; next;}
@splited = split (/\n/, $line);
$test = @splited;
@test = grep (/東京/, @splited);
print "@test<hr>\n";
}
close IN;
とhighschool.csvを読んで「東京」というキーワードでGrepかけ、検索結果を<HR>つきで表示させたいのですが
マッチしなかったところにも<HR>がついちゃいます。どのように回避するのかお教えください、
0199名無しさん@お腹いっぱい。02/01/16 12:16ID:???
@splited = split (/\n/, $line);
これが何やってるかが分からないから
その後も何やってるかが分からない
@splited に何を入れたいんだろう・・・
0200名無しさん@お腹いっぱい。02/01/16 12:25ID:???
open (IN, "highschool.csv");
while (<IN>) {
if ($_ eq "") {
print "空行<hr>";
} elsif (index($_, "東京") >= 0) {
print $_, "<hr>";
}
}
close (IN);
0201超初心者02/01/16 12:38ID:zfCnc17S
>>199
一応読んだcsvを改行コードで区切って@に入れてるんですが。間違ってますか?
それと198で訂正がありましたすみません
open IN, "highschool.csv";
while ($line = <IN>){
if ($line eq '') { print "(空行)<hr>\n"; next;}
@splitted = split (/\n/, $line);
@test = grep (/東京/, @splitted);
print "@test<hr>\n";
}
close IN;
0202名無しさん@お腹いっぱい。02/01/16 12:45ID:???
>201
一行ずつ読み込んで、改行マークでsplitしたって、全文が$test[0]に入るだけでしょ?
csvファイルの区切り文字って\nでしたっけ?
0203超初心者02/01/16 12:52ID:zfCnc17S
>>202
いえこの時点でカンマで区切る必要はなく、改行で区切る必要があったんです。
0204名無しさん@お腹いっぱい。02/01/16 12:58ID:???
>while ($line = <IN>){
これはなにをしてる所?
俺は「ファイルから1行ずつ呼び出す」ものだと思ってるんだが。
つまり\nが二つ以上ある可能性はないのだけれどね。
0205名無しさん@お腹いっぱい。02/01/16 13:01ID:???
open IN, "highschool.csv";
while ($line = <IN>){
$c++;
print qq($c行目 $line\n);
@splitted = split (/\n/, $line);
foreach $i(0 .. $#splitted){
print qq($c行目$i個目の要素 $splitted[$i]\n);
}
}
close IN;

とりあえずこれを実行してみて何が起きているか考えてみてくださいな。
0206名無しさん@お腹いっぱい。02/01/16 13:02ID:???
つか200で良いべさ。
0207超初心者02/01/16 13:15ID:zfCnc17S
皆様。ご指導ありがとうございました。
>>200さんのアドバイスでできました。
ホントお恥ずかしい・・・
0208 02/01/16 20:19ID:???
@char=('0'..'9','a'..'z','A'..'Z');

という62文字を使って 1 (あるいは 0)から ZZZZZZZZ までの
62進数を順番に生成したいのですが、上手にやる方法はありますか?
0209名無しさん@お腹いっぱい。02/01/16 20:36ID:???
http://pc.2ch.net/test/read.cgi/php/1009549309/40-41
0210名無しさん@お腹いっぱい。02/01/16 20:41ID:???
2週間もやってるのか  (笑
0211名無しさん@お腹いっぱい。02/01/16 21:30ID:???
>208
生成した数値(文字列)をどうしたいのか
配列に入れると218340105584895個要素が居るがそれでも良いのか
つーか41で分からんの?
0212名無しさん@お腹いっぱい。02/01/16 22:55ID:iUy26tny
リンクを張られた文字の隣にクリックされた回数を表示するにはどうすればいんですか?
0213名無しさん@お腹いっぱい。02/01/17 02:36ID:???
> 208
簡単過ぎ

@char= ('0'..'9','a'..'z','A'..'Z');
for $char ( @char ){
print &xxx($char),"\n";
}
sub xxx{
my( $ret, $flg );
for ( reverse split(//, $_[$[]) ){
unless ( $flg ){
if ( $_ eq 'Z' ){
$_= '0';
}
else {
if ( $_ eq '9' ){ $_= 'a'; }
elsif ( $_ eq 'z' ){ $_= 'A'; }
else { $_++ ; }
$flg= 1;
}
}
$ret= $_ . $ret;
}
$flg ? $ret : "1$ret";
}
0214名無しさん@お腹いっぱい。02/01/17 02:41ID:EnQVX8GI
$foo->{hoge};
と
$foo->hoge;
は、上がハッシュだとして、下のは何を表すんでしょうか?
0215名無しさん@お腹いっぱい。02/01/17 02:50ID:???
>214 メソッド。
021621402/01/17 02:55ID:EnQVX8GI
ありがとうございます。これがメソッドか…
0217名無しさん@お腹いっぱい。02/01/18 02:21ID:/Sq0HWtq
えと、Perlのスクリプトの速度比較、つまりベンチマークをしたいのですが、なにか方法はないでしょうか?
0218名無しさん@お腹いっぱい。02/01/18 02:24ID:???
>>217 Benchmark.pm
0219名無しさん@お腹いっぱい。02/01/18 12:15ID:/Sq0HWtq
>>218さんありがとうございます。
試しに「for」と「while」のベンチマークをしてみたところ
やや「while」の方が効率がいいようですね。<読み込むスクリプトでは
まだ簡単なスクリプトでしか試してないので、分かりませんが。
0220名無しさん@お腹いっぱい。02/01/18 13:09ID:mZLIoXNk
perlでこの行を入れてアップすると500エラーになるんですよ。
my $query = $ENV{'QUERY_STRING'};
Win用のアパッチでテストした時は良かったんです。
理由を教えていただけませんか
0221名無しさん@お腹いっぱい。02/01/18 13:17ID:???
Perlが腐ってるから
myを外そう
022222002/01/18 13:22ID:mZLIoXNk
ありがとうございます。即効解決しました。
Perlが腐ってるんですね。
感謝
0223名無しさん@お腹いっぱい。02/01/18 15:03ID:???
>>221
解説希望。うちだとエラー起きないから、何処が腐ってるのかわかんない・・・
0224!22102/01/18 16:23ID:???
>>223
Perlが5より古くてlocalしかないとか?
0225名無しさん@お腹いっぱい。02/01/18 17:07ID:???
俺のプロバのPerlが4なんだけど、myを入れるとエラーになるよ。
ということで>224に同意。
022622302/01/18 17:21ID:???
腐ってるって、そういう意味か・・・・・・
0227名無しさん@お腹いっぱい。02/01/18 18:49ID:???
ぷ
0228名無しさん@お腹いっぱい。02/01/18 19:10ID:6q/Kp0dN
今、perlの勉強していて、SSIを使ってアクセスカウンターを作りました。
それで、できたplファイルとshtmlを同じ階層に入れて、
shtmlをブラウザ(IE6.0)で開いて確認しようと思ったんですが、
開けないんです。どーしたらいいんでしょーか。
スクリプトは間違ってないと思うんですが。。。
0229 ◆efPZis9A 02/01/18 19:29ID:y3hRDyTH
パーミッションはどうよ?
023022802/01/18 19:34ID:6q/Kp0dN
パーミッションはどうなってるか分かりません。
Apache起動して、ローカルでテストしてます。
ブラウザの右下にある青いバーが
増えていってるだけで画面は何も変わりません。
0231名無しさん@お腹いっぱい。02/01/18 20:11ID:TBZ1H2T9
正規表現で「?」を検索したいんですが、「\?」だと上手く動作しません。
別の方法があるのでしょうか。
0232名無しさん@お腹いっぱい。02/01/18 20:35ID:???
>230
アクセスカウンターが無限ループしてるとかじゃないの?

>231
\?で大丈夫のはずだよ。
念の為にローカルで試してもみたけど、普通に出来た。
その前後の文に問題があるんじゃないのかな?
0233名無しさん@お腹いっぱい。02/01/18 21:06ID:???
>232
無限ループは無いと思います。サンプルファイルでもやってみました。
アドレスに、
127.0.0.1/*.shtmlとやってますが、白いまんま。
shtmlをhtmlにかえると表示はされるのですが、スクリプトは動かないです。
shtmlのアイコンは、IEのアイコンにならないの?
0234名無しさん@お腹いっぱい。02/01/18 21:08ID:???
>232
そのカウンタを直接呼び出したら?

てゆーか、ApacheのSSIの設定が通ってないとかは?

アイコン変える方法は、ファイルの関連付けでしょう。
023523202/01/18 21:18ID:???
できました。
原因は、本に誤りがあったようです。ホームページで確認しました。
<!--#exec cmd="*.pl"-->
を
<!--#exec cgi="*.cgi"-->
に変えろということでした。変えたところ、上手くいきました。
どうもありがとうございました。
0236名無しさん@お腹いっぱい。02/01/18 23:49ID:vKcOvEew
カレンダーを作ろうとしています。
例えば2002年1月1日の曜日を知りたい場合、以下の式で分かるのですが、なぜこ
れだけで分かるのでしょう?

($year + ($year-1)/4 - ($year-1)/100 + ($year-1)/400) % 7

上の式で出た余りを対応させれば2002年の最初の日の曜日が出ますが、これだけ
でなぜそうなるのか全く分かりません。

また、

$i = ($year + ($year-1)/4 - ($year-1)/100 + ($year-1)/400);

とした上で、

2002年4月1日の曜日を知りたい場合はその前の月(1月から3月まで)の日の合計
(31+28+31)を$iに足して7で割り余りを出すと出て来ます。

($i+(31+28+31)) % 7

でもこの仕組みが良く分かりません。そもそもなぜ年だけで、任意の年の最初の
日の曜日が分かるのか、また、それをもとにしてどうして任意の年の任意の月の
最初の曜日まで分かるのか全く分かりません。

どなたか説明をお願いできますか。
0237名無しさん@お腹いっぱい。02/01/19 00:07ID:???
上の100で割ったりするのは、まあ公式だ
Zellerの公式で検索してみて

ここに、日付け絡みのサンプルが色々出てるから必読
他にも役に立つしね
http://www.din.or.jp/~ohzaki/perl.htm

0238名無しさん@お腹いっぱい。02/01/19 01:59ID:tDZ3djB8
すいません・・・超初心者なんですが、よろしくおねがいします!

win98に、間違ってwinNTのPerlをインストールしてしまったんですが、
アンインストールはどうすればいいのでしょうか???

C:を「Perl」とか「NT」で探したら、Temporaryフォルダにしか
ないみたいなんで大丈夫かな?と思ったんですが、
インストーラーをもう一回起動させたら、
『指定されたサービスはすでに存在します』
ってエラーメッセージが!!!!

『アプリケーションの追加と削除』には、何もできてません。
どなたかお助けーーーー!
0239agege02/01/19 05:21ID:???
> 238
C:がダメならD:があるさ
0240Tupple3d02/01/19 05:30ID:tSYJ2BTR
すんまそん。Web制作板から来ました。

$a = 1;
$a = $a++;

Perlで$aの値はどうなりますか?
0241agege02/01/19 06:00ID:???
> 240
「すんまそん」って、出だしから寒すぎて手がかじかんでうまく答えがかけないよー。
どうしよー。
024224002/01/19 06:28ID:???
分かったー!

Perl : 1
Java : 1
C(gccだっと思う) : 2
JavaScript : 1

>>241 お前もなかなか
0243名無しさん@お腹いっぱい。02/01/19 06:34ID:???
$a = 1;
$a = $a++; # $aは 1
$a = ++$a; # $aは 2
0244名無しさん@お腹いっぱい。02/01/19 07:06ID:tDZ3djB8
上書きで無事アンインストールできたよーーーー^^
0245名無しさん@お腹いっぱい。02/01/19 07:21ID:???
>244
おめでとう
0246名無しさん@お腹いっぱい。02/01/19 15:46ID:b2nTXpDv
Flash5とcgiの絡みの勉強してるのですが、
FlashからデータをPOSTで送信しようとすると、
データが渡ってないようです。
GETだとちゃんとわたってます。
cgiはこんな感じです。(一部ですが)

#フォームデータの取得
if($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN,$query,$ENV{'CONTENT_LENGTH'});
}
else{
$query=$ENV{'QUERY_STRING'};
}
0247初心者02/01/20 06:05ID:+Bzlb+s3
Perlで書かれたCGIスクリプトを自分で読んで解析しています

サブルーチンの定義のところで

sub FormThList($;$)
{
   処理・・・
}

という部分をいくつも見かけます

引数にある" $;$ " という部分は何をあらわしているのでしょうか?
自分で書籍やWebを調べてみたりしたのですが、引数なのか、リフ
ァレンスなのか、それとも他のものなのか、さっぱりわかりませんでした。

どなたかお分かりの方ご教授ください。宜しくお願いいたします。
0248名無しさん@お腹いっぱい。02/01/20 15:18ID:GAoGOGYW
あげ
0249  02/01/20 17:22ID:xUMdAd4X
$_は、あれ、をあらわします。
ほら、あれもってきて。って、よく、彼女とかにいってるでしょ。
そのあれ。だよ。
0250名無しさん@お腹いっぱい。02/01/20 17:58ID:???
>>247
引数の形式を指定してる。
$はスカラー。;以降は省略可。 ほかにもいろいろ指定できる。
詳しくはperldoc perlsubか,プログラミングPerl改訂版133Pを参照のこと。
0251名無し02/01/20 21:19ID:Nggbj65w
勉強ついでに指定ディレクトリのファイル全文検索作ってみたんですけど、キーワードに日本語入れるとうまく動かないんですがなぜでしょう?

$dir = ''; # 指定ディレクトリ
$file = '.html'; # 検索対象ファイルの拡張子
$key = ''; # キーワード
opendir(DIR,$dir);
@files = readdir(DIR);
closedir(DIR);
foreach (@files){
if(/$file$/){
open(FILE,"$dir/$_");
@data = <FILE>;
close(FILE);
foreach (@data){
$seach = $seach . $_;
}
if($seach =~ /$key/i){
push(@list,$_);
}
}
}
foreach (@list){
print;
print "\n";
}
0252名無しさん@お腹いっぱい。02/01/20 21:26ID:???
>251
URLデコードをしてないとか。
「ー」が含まれてるとか。


余談だけど無駄が多いからもうちょっとシェイプアップした方がいい。
grep使うとか。
0253名無しさん@お腹いっぱい。02/01/20 23:36ID:9LP6jm+w
>>251
EUCの場合

$EUC_JP = '(?:[\x00-\x7F]|[\xA1-\xFE][\xA1-\xFE]|\x8E[\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE])';
if $seach =~ /^$EUC_JP*$key/i {
...

perlメモだかに、詳しく載ってた気がする。
0254agege02/01/21 03:26ID:???
> 250
それにしてもサブルーチンに引数の形式を指定するメリットがわかんないんだけど、
どういうことYO!

単に引数形式を明確にするだけのこと?

うーん!こんやも眠れない。
0255名無しさん@お腹いっぱい。02/01/21 03:31ID:???
>>254
眠れないんだったらperlsub読みなよ。
どういうときに使うのか書いてある。
0256名無しさん@お腹いっぱい。02/01/21 03:39ID:???
仮引き数書けない方がずっと異常です
逝っちゃってますねもう
0257agege02/01/21 03:47ID:???
> 256
なるほど、漏れが異常なのか。チョットだけ安心しました。
255さんの提案でperlsub読んでだいたいはわかりました。
それにしても今までラクダ本しか読んでなっかったからバージョンアップに伴う追加・更新部分は
未知な部分が多いネー。
0258あうあうあう02/01/21 07:42ID:???
Win98+ActivePerlで勉強しようと思うのですが、
日本語部分は(メッセージなど)EUCで書くのが正解と聞きました。
ところが、DOSプロンプトだとEUCは文字化けします。
Shift-JISで書けば、DOS上では問題ないですが・・・。
どうしたらよいですか?
print "日本語いーゆーしーだ!";
とかでやると
ニ・ワク・、。シ、譯シ、キ。シ、タ。ェ
になります。
■ このスレッドは過去ログ倉庫に格納されています