Perlコーディング初心者質問スレ Part 50
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/06/26(月) 00:46:38ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0153nobodyさん
2006/07/02(日) 22:07:24ID:???それは、
「コードの最初の方に1箇所だけ統一処理を置いて読み込む度に処理される」
ということを意味してるのか、
「必要不要は置いといて、オープンする度に毎回とりあえず統一処理する」
ということなのか、どっちの意味ですか?
読解力不足ですみません。
0154148
2006/07/02(日) 22:27:28ID:???そうか、ごめん。こっちの環境ではちゃんと自動認識できてたもので、つい。
なら、SJISの一バイトカナの問題もあるし、
呼び出し元のフォームでエンコーディングを指定してもらうか、
もしくはフォームに適当なマルチバイト文字列を埋め込んでおいて、
それが何になったかでエンコーディングを調べるってのはどうよ。
# formにはaccept-charsetなんてのもあるのだけれど、IE対応してないんじゃ仕方ない…
0155132
2006/07/02(日) 22:38:32ID:n0vd3nFAご回答くださり有難うございます
なるほど、その方法がありましたね
ソース見られるとちょっと不恰好だけど・・・
てゆーか素朴な疑問なのですが
jcodeモジュールを使っている人で同じような問題に当たった人って居ないのかなあ・・・
eucで「〜」を入れるとNGというのは発見したのですが
# ちなみに入力ページをEUC-JPにした上で「〜」を入力したところ確かにNGでした
自分一人だとしたら、やっぱり何か私の書き方がおかしいんだろうな・・・
jcode.plではこんなこと一回もなかったのでjcode.pmが嫌いになりそう
0156nobodyさん
2006/07/02(日) 22:45:18ID:???0157nobodyさん
2006/07/02(日) 22:49:46ID:???Jcode::convertには
"\xe5\xbf\x83\xe9\x9c\x8a"
という「心霊」をutf8にしたバイト列を食わしているわけだが、
$Jcode::DEBUG=3にしてこいつを変換すると
>DEBUG:sjis = 6, euc = 2, utf8 = 6 at 〜
と出るので、sjisとutf8のスコアが同点でどっちにも決められない
状態になっていることがわかる。
これは避けられないことなので、普通はhiddenで判定用文字列を
渡してどういうのが来るかで文字コードを決定し、他のパラメタに
ついてはJcodeの自動判定にたよらずその文字コードを入力コード
に指定してやるのが安全。
0158132
2006/07/02(日) 23:19:43ID:???>>156-157
なるほど、了解しました
とくに>>157さんは細かく調べて頂き深く感謝致します
>>154さんも仰っていたように
判定用文字列を渡してチェックする方向で対処したいと思います
長い時間お付き合い頂き、皆様、本当にありがとうございました
0159nobodyさん
2006/07/02(日) 23:58:34ID:???Jcode.pmはオブジェクト指向が前提だし、その先にはEncodeへの視野がある。
使いこなせないなら無理すんな
0160nobodyさん
2006/07/03(月) 01:25:18ID:???jcode.plはUTF-8に対応して無いんだが
0161nobodyさん
2006/07/03(月) 01:44:49ID:???答えた本人じゃないけど・・・
>「必要不要は置いといて、オープンする度に毎回とりあえず統一処理する」
だと思う
俺も基本的にはデータファイルを読み込むときに改行を統一 (または不要なら削除) してる
「あれ? このデータは改行付だったっけか?」 なんて迷うことも少なくなるので、
自分でどの段階でまとめておくとか、自分なりのルールを決めておくといいかと思います。
0162nobodyさん
2006/07/03(月) 02:25:22ID:???もうこのさいUTF-8でもSJISでもなんでもいいからさ
0163nobodyさん
2006/07/03(月) 07:23:23ID:???utf8の心霊はそんなにもeucっぽいという事?w
でも、実際には文字化けしてるわけで、・・・なんか変な感じだ・・・
0164nobodyさん
2006/07/03(月) 07:27:52ID:???$_[0]=="ダメだ"
$_[1]=="ダメっす"
自分の経験からするとこういうランダムは、すぐにうっとうしくなるw
0165nobodyさん
2006/07/03(月) 09:14:35ID:???unicodeはいい機会だったのだが日本語については従来のコード
との対応について統一に失敗したのでだめぽ。まったく当時その
辺で仕事してた奴らは負の遺産を残してくれたものだ。
0166149
2006/07/03(月) 10:05:01ID:???もう誰もレスくれないと思ってたからちょっと感動。
やっぱり、オープンの度にコード統一する癖付けといた方が何かと良さそうですね。
これで改行統一の野望に一歩近づきました。
ありがとうございます!
0167nobodyさん
2006/07/03(月) 12:27:50ID:???utf8は神。もうちょっとがんばってはほしかったが。
jcode の文字自動判別は前からいろいろ問題あったよね。
length で判定して同じ文字数だったらEUCにするので、
sjis で半角カナだけ書いて文字判別させると文字化けするとかね。
優先順位指定できたらもっと使いやすかったと思う。
0168nobodyさん
2006/07/03(月) 12:30:55ID:???0169nobodyさん
2006/07/03(月) 14:44:46ID:???>jcode の文字自動判別は前からいろいろ問題あったよね。
よくしらないので教えて欲しいんだけど、
utf8で文字化けしないencode方法あるの?
googleとかで文字化けしたの見たことないし方法あるのかなあ。
0170nobodyさん
2006/07/03(月) 18:36:40ID:???ごめん、日本語でおk
(フラグのない) utf8 だって見分けるのは簡単でしょ。
最初の文字から最後の文字まで ascii と utf8 だけだったら utf8 てすればいい。
ああいう特徴的な文字の並びはほぼ間違いなく utf8 なんだから。
掲示板とかで sjis で HTML 書いてて、ほとんどそのフォームからデータ送信して受け取るのに、
euc と sjis が候補にあがった場合、わざわざ euc だと推測するのはおかしいでしょ?
その推測を頼りに決定しまってるのが jcode の convert というか getcode の欠点。
半角カナの文字化けだって、sjis 判定に半角カナのコード範囲を入れてないから起こるもの。
だから、何でもかんでも 1行で変換を済まそうとせず、
一旦 Encode::Guess の guess_encoding みたいに推測して文字コードの候補をとり、
複数の候補があった場合、プログラマがどっちを優先して変換するか書いて決めればいいんじゃないかと思うわけ。
長ぇ!
0171nobodyさん
2006/07/03(月) 19:43:50ID:???送信すれば?
<input type="hidden" name="encoding" value="sjis">
バイナリから推測なんてメンドクサイ、ムズカシイ、確実じゃない、いい事何もない。
0172nobodyさん
2006/07/03(月) 19:47:02ID:???利用者が文字コード知ってて、しかもフォーム書き換えてくれるなんて
あまり期待できないと思うけど。
0173nobodyさん
2006/07/03(月) 20:01:53ID:???http://〜/~.cgi?q=ほげほげ
ってやったときの文字コードなんて何になるかわかんないしな
0174nobodyさん
2006/07/03(月) 20:41:54ID:DxhEPLl+open(FH,$FILE);
while(<FH>){
if(マッチ条件){処理}
push(@newdata,$_);
}
とすると、マッチして書き換えた後もファイルの中身を最後まで読み込んで無駄な処理が出てしまいます。
lastとかで飛ばしたいところですが、そうするとファイルの中身が書き換えた行以降消えることになります。
こういうとき、どういう処理をすれば無駄なく完遂できるんでしょうか?
セオリーみたいなものがあれば教えて下さい。
0175nobodyさん
2006/07/03(月) 20:50:54ID:???自分のページにフォーム作ろうなんて考える利用者はHTMLぐらいかけるでしょ普通
で、文字コード別にフォームのソース置いといて、化けない奴使ってね、て書けばたぶん分かる。
何にも知らない人はそもそも変なフォームから送信してこないので問題ないと思う・・・
>>173
フォームから入力したいって言ってるんだからGETメソッドに対応しなければいいのでは?
どうしてもGETも対応したいって場合も、ばけたら&en=***なんとかを付けて見て下さいみたいな
誘導でなんとかなりそう・・・
そもそも、アドレス欄からクエリー送信してくるのは上級者だと思う
0177nobodyさん
2006/07/03(月) 21:08:28ID:???それを守ってくれればいいのだが、とんでもないのが存在するのも現実だ。
一番ひどいと思ったのはhiddenとそれ以外で別のコードで送ってきやがった
某ブラウザ。数年前の話だから今は改善されてるかな。
0178nobodyさん
2006/07/03(月) 21:11:39ID:???176の指摘はおいとくとしても、偶然同じ長さの行に書きかえるのでない限り
それ以後の内容を前後にずらす必要があるので、そういうことは考えるだけ
無駄ですな。
File::Inplaceの使用をお勧めする。
0179nobodyさん
2006/07/03(月) 21:14:39ID:???一気に read でファイルの中身全部読み込んじゃって、
あとは s{^(マッチ条件).*}{ 処理 }em; とかして、
一気に書き出せばいいんじゃね?
0180174
2006/07/03(月) 22:04:52ID:DxhEPLl+いや、確かにファイルの中身自体は消えてませんが、そういうことでは…。
>>178
多少の無駄には目をつぶって最後まで走らせておくのが吉なんですかね。
File::Inplaceについては調べてみます。ありがとうございました。
>>179
確かに正規表現で1回マッチ直後に処理すれば、無駄はなくなる…けど、
処理そのものの負担が大きくなってしまうような…。
色んな場面で必要にかられる処理だと思ったので、
他の人はどんな風に処理してるのか適当にCGIを見てみたところ
>>174に書いてあるのが結構多かったかも。
中には
open(FH,$FILE);
my @data = <FH>;
my $loop = @data;
my $i;
while($loop>0){
@temp = split(/ /,$data[$i]);
if(マッチ条件){
処理
last;
}
$i++;
$loop--;
}
ってのも、ありました。ちょっとゴテゴテしてるなぁ。
0181nobodyさん
2006/07/03(月) 22:05:46ID:???よくlocal何て使わないでmyと書いてあるがすべてmyにしたらダメだよね?
ちょっと違いが分からないので教えて欲しい・・・。
0182nobodyさん
2006/07/03(月) 22:14:19ID:???> 処理そのものの負担が大きくなってしまうような
何でそう思うのかkwsk
my @data = <FH>;
↑こんなことしてる方がよっぽど負担強いてると思うぞw
>>181
コーチ変えたほうがいい。
0183nobodyさん
2006/07/03(月) 22:19:42ID:???KENTが一番楽だったからそれにしてたいが今更コーチ変えろって
簡単で見やすいスクリプトなんてあるの?
何せKENTのスクリプトをみて覚えてきた人間だから今更となると見やすいスクリプトじゃないの無理な気がする。
0185nobodyさん
2006/07/03(月) 22:24:31ID:???0186nobodyさん
2006/07/03(月) 22:48:13ID:???状況は変わると思う。
0187nobodyさん
2006/07/03(月) 22:54:50ID:???任意の一行ってことはマッチする行がはじめから一行しかない
事が分かってるってことですかね?
それともマッチした最初の行だけとか、?(それだと174はまずいですよね・・・
ファイルの構造が固定してるなら、該当する行をダイレクトに指定
できる可能性とかはありえない・・・?
0188nobodyさん
2006/07/03(月) 23:07:15ID:???0189nobodyさん
2006/07/03(月) 23:16:27ID:???初心者のオイラにはなんのこっちゃか分からない行がたくさんあって、ちょっと嫌
0190nobodyさん
2006/07/03(月) 23:20:54ID:???セキュリティくらい考えて作れよー。
まあKENT儲は ∩( ´∀`)∩コチラヘ (っ´∀`)っ))ドウゾ
KENT WEB 総合スレ Part2
http://pc8.2ch.net/test/read.cgi/php/1078991985/
0191nobodyさん
2006/07/03(月) 23:32:34ID:???…向上心があるなら、出来るだけ早い内にPerl5流に馴染んでおいたほうが楽だぞ。本当に…
きっと、各種モジュールに興味が出てきた頃に、矯正するのに時間がかかって苦労する。というか、した。
# 独学だと何がまともなのか、判るようになるまでが難しい
閑話休題。多くの場合では、myに置き換えて大丈夫だと思う。
localとmyの違いは効果の範囲が動的…プログラムの流れに沿ったものか、
静的…ソース上のブロックに対応したスコープか、と言うのが一番の差。
以下、差を顕著にするためのどうしようもない汚い例。
sub fuga { $foo }
sub hoge_my { my $foo = 'hoge'; print 'my: ', fuga(), "\n" }
sub hoge_local { local $foo = 'hoge'; print 'local: ', fuga(), "\n" }
$foo = 'outer'; hoge_local(); hoge_my();
---------------
local: hoge
my: outer
あと型グロブのように、単純にmyに置き換えることの出来ないものもあるけれど、
これも、出来る限りリファレンスを使って書くのがPerl5流。
localの出番はPerlで定義済みの変数($/の類)とか。
何か大事な点がすっぽ抜けてたら、フォロー宜しくお願いします。
0192nobodyさん
2006/07/03(月) 23:36:24ID:???local しただけではエラーになるので注意。my か our などが必要。
0194174
2006/07/03(月) 23:46:28ID:DxhEPLl+>何でそう思うのか
いや、単純に感覚的なものなので間違ってたらすみません。
ファイルの中身が数千行とかあった場合で、
該当する行の情報もそこそこ大きい場合、
全部読み込んで正規表現にかけるより
1行ずつチェックした方が良さそうに思っちゃいました。
>>187
>任意の一行ってことはマッチする行がはじめから一行しかない
>事が分かってるってことですかね?
その通りです。でも、その行はどこにあるのかは分からないし流動的。
掲示板とかアクセスログとかのログと同じようなもんですね。
なので、ダイレクトに指定することはできないです。
0195nobodyさん
2006/07/04(火) 00:01:32ID:???数千行ならさあ、
数千回ループさせて、数千回ファイルからデータとってきて、数千回 @array にその大きいデータを push するのと、
改行の数なんか関係なく 1回 read して $scalar に入れて 1回だけ置換 するのと、
総合的にどっちが良さそうに見える?
まあその数千行のファイルが ウン十Mb とかなら話は変わるけど、そんな規模のデータファイル作ったりはしないよね。
とりあえずいくつか方法で迷ったらベンチでもとっとけばいいと思う。
0196nobodyさん
2006/07/04(火) 07:41:17ID:???かなり不毛。ファイルを編集するのが目的ならしょうがない
かもしれないが、データ保存用ならいくらでもやりようがある
はずだ。
0197nobodyさん
2006/07/04(火) 10:28:25ID:???0198nobodyさん
2006/07/04(火) 12:30:08ID:???掲示板のログと一緒。
0199nobodyさん
2006/07/04(火) 12:47:20ID:???置換でなかなかうまく行きませんでした
良い方法はありますか?
0200nobodyさん
2006/07/04(火) 13:02:03ID:???0201nobodyさん
2006/07/04(火) 13:11:56ID:???0204nobodyさん
2006/07/04(火) 22:40:59ID:???もう、納得すみかも知らんが
#!/usr/bin/env perl -w
my @data = ();
my $flag = 0 ;
while ( <> ){
if( /print/ ){ s/print/say/ ; $flag ++ }
push @data, $_ ;
last if $flag != 0 ;
}
push @data, <> ;
print @data ;
これを hoge.pl として保存して
% perl hoge.pl hoge.pl
してみそ?
0205nobodyさん
2006/07/04(火) 23:22:36ID:???foreach(@localsubject){
if($_=~/$loopsubject/){
$localsubjectmatchswitch=1;
last;
}else{
$localsubjectmatchswitch=0;
}
}
}
のようなスクリプトを書いたのですがif($_=~/$loopsubject/)で判定してくれません。
判定後の処理にprint "match";を書いてみると何も帰ってきません。
@datnameの内容は
1152013113.dat
1152013147.dat
のようなものです。@localsubjectには2chのsubject.txtのような内容が入っています。
@loaclsubejctの中に@datnameの中身が入っているか判定したいのです。
入っていたらスイッチを1にしてループを終了させて、ループが全部終わったときに
スイッチが0だったら書き込みの処理をしたいです。
なぜ判定してくれないのでしょうか?教えてください。お願いします。
0206nobodyさん
2006/07/04(火) 23:32:02ID:???chomp $loopsubject ;
入れてみるとか…。
0207205
2006/07/04(火) 23:57:29ID:???ありがとうございます!検出はうまくいきました!
でも今度はすでに@localsubjectにあるはずなのに無いと検出されます…なんででしょうか?いろいろ試してみたけどわかりません。
スイッチの検出は
if($localsubjectmatchswitch==0){
$writesubject=$datname[$i]."<>".$threadtitle[$i];
unshift(@localsubject,$writesubject);
}
のようにしてやってます。
0208nobodyさん
2006/07/05(水) 00:06:26ID:???内側の foreach ループのあとに、フラグに関する処理が入ってるんだよね・・・?
0209nobodyさん
2006/07/05(水) 00:07:58ID:???>>205 では
$localsubjectmatchswitch=1;
ってマッチしたとき 1 代入してんのに
>>207
では 0 のときの処理を書いてるよ。
0211nobodyさん
2006/07/05(水) 00:16:10ID:???0212nobodyさん
2006/07/05(水) 00:29:19ID:???内側のforeachループでローカルsubject.txtの中身を調べて
マッチしたら1を返してすべてにマッチしてなかったら処理をするようにしています。0の時の処理を書いてるのはそのためです。
外側のforeachループは検索語を順番に処理するようにしてあります。
で、どうしたらいいんでしょうか?理論的には問題が無いように見えるのですが…
なぜマッチしたはずなのにマッチして無いとみなされるんでしょうか?
>>211
変数名長くしないとわからないアホな子なんです。許してやってください。
0213205
2006/07/05(水) 00:31:21ID:???>>208
>内側の foreach ループのあとに、フラグに関する処理が入ってるんだよね・・・?
そのとおりです。
0214nobodyさん
2006/07/05(水) 00:42:12ID:???$localsubjectmatchswitch
の初期化はきちんと入れてるよね。>>205の2行目
(>>206のchompの次の行)あたりに。
0216205
2006/07/05(水) 00:48:32ID:???入れてませんでした。でも入れても結果が変わらない…マッチして無いとみなされてsubject.txtに書き込まれる…
それと、なぜか一回で2重に(同じ内容が2行)書き込まれます。これもforeachあたりの間違いだと思うんだけどどこが悪いのかわからない…
アドバイスください。お願いします。
0217nobodyさん
2006/07/05(水) 00:52:05ID:???0218nobodyさん
2006/07/05(水) 00:56:39ID:???全容が見えなさすぎ
0219nobodyさん
2006/07/05(水) 01:05:56ID:???エスパー求めすぎ。
0220205
2006/07/05(水) 01:23:12ID:???http://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi42709.txt.html
ソースうpしました。アドバイスお願いします。
>>217
$iは忘れてました。つけたら少しはまともな動作をするようになりましたが求めていたものとは違いました。
0221nobodyさん
2006/07/05(水) 01:44:31ID:???0222205
2006/07/05(水) 01:50:05ID:???0223nobodyさん
2006/07/05(水) 01:51:31ID:???@localsubject のどれかが、
@datname の最後の値 ( @datname[ $#datname ] ) にマッチしたら 1、マッチしなかったら 0
ってことなんだけど、それは処理としていいの?
どうみても @datname の最後未満の値は、マッチしようがしまいが関係ないって感じだよね。
0224205
2006/07/05(水) 02:27:35ID:???>@datname の最後の値 ( @datname[ $#datname ] ) にマッチしたら 1、マッチしなかったら 0
ってことなんだけど、それは処理としていいの?
@datnameは外側のforeachでまわしてるから全部にマッチしてるかどうか確かめてあるはずですけど…
判定ルーチンが内側のforeachのすぐ後ろに来るから判定はしてくれてるはずです。
いまいろいろやって、とりあえずローカルにsubject.txtを書き出すのはうまくいったみたいです。
あとは、これが2重に書き込まれないようにするためにしないとなんだけど、そこの処理をやってるのが96〜111行目なんですよね。
で、そこがうまくいってないみたいです。$localsubjectmatchswitch=0;になるときの処理に
print "nomatch";を加えたらすでにローカルsubject.txtに書き込んである場合でもnomatchを返されました。
だからif($loopsubject=~/$loopdat/)が問題ですかね?
それとも@datanameの内容が2つあるから違うほうの内容に反応してnomatchを返すことになってるのでしょうか?
でもforeach $loopsubject(@localsubject)で内容全部まわしてるから1つでもマッチしたら2重に書き込みはされないはずですけど…
なんでまずいのかわからないのでアドバイスお願いします。
0226nobodyさん
2006/07/05(水) 02:42:02ID:???こんなの保存して楽しいのか
0227nobodyさん
2006/07/05(水) 02:55:40ID:???0228205
2006/07/05(水) 02:59:19ID:???これが気になって眠れません。寝たほうがいいってか寝ないとなんですけど…
>>226
テスト用の検索ワードが思いつかなかったため適当に目に付いたスレを選んだのです。特に深い意味はありません。
原因が判明したっぽいです。103行目あたり、foreach $loopsubject(@localsubject){
でローカルのsubject.txtを解析するのですが、$loopsubjectをループ内でprintしてみたところ最後の1行しか表示されませんでした。
全部表示されるはずのローカルsubject.txtが表示されないということはマッチも出来ないわけですからnomatchになるということだと思います。
で、どうにかしたいんですがどうしたらいいんでしょうか?foreachで表示されないなんてことは初めてなのでわかりません。アドバイスお願いします。
0229nobodyさん
2006/07/05(水) 03:04:35ID:???> @localsubject=<F>;
これかwwwwwwww
>> とか < とかの区別もできない子だったんですね。
0230nobodyさん
2006/07/05(水) 03:07:22ID:???0231205
2006/07/05(水) 03:22:39ID:???ファイルオープンの時につけるのって>と>>しか知らなかった…今ググってはじめて知った…orz
読み込みは出来るようになりました。迷惑かけて本当すみません。
でも、2重に書き込んじゃうのがどうしてもなくならないんですけどどうしたらいいんですか?
もう散々どこが悪いのか探したけどわからないんです。多分これが最後の質問です。お願いします。
0232nobodyさん
2006/07/05(水) 03:33:40ID:???直したのはわかったけど、それでマッチするようになったのかマッチしないのかぐらい書いてよ。
どうでもいいけど、 chomp $loopdat; → $loopdat =~ s/[\r\n]+$//; とかのがいいかもね。
0233nobodyさん
2006/07/05(水) 04:07:21ID:???0234nobodyさん
2006/07/05(水) 04:27:05ID:???あ…ありのまま 今 起こった事を話すぜ!
『myの羅列とインデントにくらっと来たと
思ったらいつの間にか作り直していた』
「今時Perl4」とかそんなチャチなもんじゃあ 断じてねえ
もっと恐ろしいものの片鱗を味わったぜ…
>>231
漏れのところでは開くモードを適切に変更して関連部分を修正すれば一応動くがなぁ…
+<モードで開いた?それとも<で読み込んだ後、一旦閉じて>モードで開きなおし?
もし+<モードなら、seekしてないんでないのか。
あと直接関係無いが、112行目の$iのインクリメント位置が間違ってる。
>>232
いや、そもそも@datnameには改行は入ってこない。
<>でsplitした前半相当だから。
0237nobodyさん
2006/07/05(水) 05:00:47ID:???一応 use strict 通るけど、あんなじゃ kent local と変わんないっつー。
0238nobodyさん
2006/07/05(水) 07:41:25ID:???0239nobodyさん
2006/07/05(水) 14:04:38ID:???0240nobodyさん
2006/07/05(水) 14:08:45ID:???それって良くないことなのか?
むしろ推奨!みたいな感じだと思ってたので詳しく教えてくれ。
0245nobodyさん
2006/07/05(水) 17:04:50ID:???0247nobodyさん
2006/07/05(水) 18:10:57ID:???0250205
2006/07/05(水) 20:56:42ID:???foreach $loopdat(@datname){
chomp $loopdat;
$datmatchcheck{$loopdat}=0;
foreach $loopsubject(@localsubject){
if($loopsubject=~/$loopdat/){
$localsubjectmatchswitch=1;
print "match:$loopdat\n";
last;
}else{
$localsubjectmatchswitch=0;
print "nomatch:$loopdat\n";
}
}
if($localsubjectmatchswitch==0 && $datmatchcheck{$loopsubject}==0){
$datmatchcheck{$loopsubject}=1;
$writesubject=$datname[$i]."<>".$threadtitle[$i];
unshift(@localsubject,$writesubject);
}
$i++;
}
このようにしてみました。しかし、2重に書き込まれてしまいます。
多分@localsubjectの中身を何度もまわすので、それでマッチして無いのがマッチして無いとみなされるみたいです。
2重に書き込まれないようにするにはどのようにチェックしたら良いでしょうか?アドバイスください。お願いします。
$datmatchcheck{$loopsubject}のようにしてみましたがこれではうまくいきませんでした。
0251nobodyさん
2006/07/05(水) 21:10:50ID:???0252nobodyさん
NGNG■ このスレッドは過去ログ倉庫に格納されています