関数の中から別の関数内のforeachの実行結果を得られない
お世話になります。
環境
perl 5.8.0
RHLinux9
以下のようにsub _Htmlからsub _List1を呼び出す場合は正常にリスト表示できるのですが、sub _List2を呼び出した場合、
Content-Type: text/html
<HTML lang=ja >
<HEAD>...として表示されてしまいます。
sub _List1{
@list = (0, 1, 2, 3, 4, 5);
foreach (@list) {
print "$_\n";
}
}
sub _List2{
$a1 = "./dir/data.dat";
$a2 = "./dir/data.dat";
$a3 = "./dir/data.dat";
&FileOpen('FILE1',"$a1");
&FileOpen('FILE2',"$a2");
&FileOpen('FILE3',"$a3");
@DATA = <FILE1>;
push @DATA, <FILE2>,<FILE3>;
close(FILE1);
close(FILE2);
close(FILE3);
foreach (@DATA) {
($key,$val)=split(/=/,$_);
print "$key=$val";
$StartNum++;
}
}
sub _Html{
print <<EOM;
<table>
<tr><td>
..
EOM
&_List('');
print <<EOM;
<tr><td>
..
</table>
EOM
}
sub _List2の内容を、CGIからhtmlを表示する際のスキン.htmlファイル内に下記のように記述した場合も
正常にリスト表示されます。
--スキン.html------
print <<"<!---HTML--->";
<HTML lang=ja >
<HEAD>...
<!---HTML--->
$a1 = "./dir/data.dat";
$a2 = "./dir/data.dat";
$a3 = "./dir/data.dat";
&FileOpen('FILE1',"$a1");
&FileOpen('FILE2',"$a2");
&FileOpen('FILE3',"$a3");
@DATA = <FILE1>;
push @DATA, <FILE2>,<FILE3>;
close(FILE1);
close(FILE2);
close(FILE3);
foreach (@DATA) {
($key,$val)=split(/=/,$_);
print "$key=$val";
$StartNum++;
}
}
print <<"<!---HTML--->";
...
</BODY></HTML>
<!---HTML--->
1;
---
補足
返答ありがとうございます。 >chmod 0606 しておくことで対処できませんか? これをどの部分に・どのように設定したらよいのでしょうか?