次の問題があります。csvファイルを抽出し、それらを読み取り、結果を出力するperlプログラムがあります。csv 構造に関する情報は、上記のアーカイブで提供される XML ファイルにあります。プログラムの古いバージョンでは、CSV ファイルの各行に対してこれらの XML ファイルを読みましたが、すべて正常に機能しました。
...;
foreach $b (@gz_files)
{
if ( index($b, 'condition1') >= 0
|| index($b, 'condition2') >= 0
|| index($b, 'condition3') >= 0 )
{
$lt = localtime;
open (my $outputfile, '>>'.'/path_to_output/'.$dir_file.'.tmp')
|| die print $lfh "$lt - /path_to_output/$dir_file\.tmp - $!\n";
if ($b ne "")
{
# this is the procedure, which reads xml_files
%cv_tmp = eventstype::initialize($complex_xml_path, $rating_input_xml_path);
@EXPORT=qw(%cv_tmp);
...;
このコードは、XML ファイルの構造を %cv_tmp 変数に追加します。その後、CSV ファイルの foreach 行で %cv_tmp の値を %complex_vals に割り当て、さらに操作します。
...
%complex_vals=%mainfile::cv_tmp;
...
しかし、この操作の後、%cv_tmp が変更されていることに気付きました。これは、割り当ての右側であるため、奇妙です。各 CSV 行の %cv_tmp を変更したくありません。説明が下手で申し訳ありませんが、私は全くの初心者です。前もって感謝します。