※ ChatGPTを利用し、要約された質問です(原文:perlのデータクリアーがうまく動きません。
)
perlのデータクリアーがうまく動かない
このQ&Aのポイント
perlのデータクリアーがうまく動かないです。データが残ったままでプログラムが処理されてしまいます。
以下のプログラムで動作するようにと思っていたのですがうまく動きません。
データの格納処理の最終結果として、期待していた結果が得られません。
perlのデータクリアーがうまく動きません。
perlでデータからリンクを生成するプログラムを作成しています。
以下のプログラムで動作するようにと思っていたのですがうまく動きません。
$xlkprのデータが$mainlinkぶん蓄積したら、$mainlink分を繰り返し(コピー)してデータ格納させたいのです。
$xliprのクリア
my $xlipr = "";
をしてますが、データが残ったままでプログラムは処理されてしまいます。
データ $datfile
リンクA
リンクB
リンクC
リンクD
リンクE
リンクF
データが残っているので以下の結果となってしまってます。
格納されるデータ
リンクA
リンクB
リンクA
リンクB
リンクA
リンクB
リンクC
リンクD
リンクA
リンクB
リンクC
リンクD
リンクA
リンクB
リンクC
リンクD
リンクE
リンクF
リンクA
リンクB
リンクC
リンクD
リンクE
リンクF
最終結果 ←この結果となって欲しいです。
リンクA
リンクB
リンクA
リンクB
リンクC
リンクD
リンクC
リンクD
リンクE
リンクF
リンクE
リンクF
以下のプログラムを載せます。
プログラム
(ここから)
略
$mainlink = 2;
open(IN,"$datfile")|| die &error(" $datfile を読み込みopen出来ません");
flock(IN,2);
@lines = <IN>;
close(IN);
foreach $line(@lines){
($seq2,$id,$mail,$temp,$purl,$ttitle,$yo1,$yo2,$yo3) = split("<>", $line);
#リンクタグ生成ロジック
if ($mainsiteurl eq $purl){
$xlink++;
if ($temp eq "1"){$xlkpr .= "<a href=\"$purl/$id\">$ttitle</a>\n";}
if ($temp eq "2"){$xlkpr .= "<a href=\"$purl/?$id\">$ttitle</a>\n";}
if ($temp eq "3"){$xlkpr .= "<a href=\"$purl/?id=$id&m=$mail\">$ttitle</a>\n";}
if ($xlink >= $max){
for($i=1;$i<=$mainlink;$i++){
$print_link2 .= "$xlkpr";
}
my $xlipr = "";
$max = $max + $mainlink;
}
}
}
以下略
データ格納処理へ
(ここまで)
もっと効率の良いプログラムもあるかと思いますが、申し訳ございませんご教授頂きたくよろしくお願いいたします。
お礼
kmeeさん 回答ありがとうございます!! myを書かないで処理しましたらバッチリ動きました。 >myは新しい変数を用意する、という意味では「変数の初期化」ですが、「既存の変数の値を初期化する」>という機能ではありません。 そうなんですね。勉強になります。 ありがとうございます。 本当に助かりました。