私は変数の宣言を考慮してこの問題を回避するのが難しいです。シナリオ:私は10語のファイルを1行に1つずつ持っています。まず、ファイルをループして、そのデータに基づいて新しいファイルを作成します。例Perlのforeachループでファイルを開いたり閉じたりするために同じ変数を使用する
banana
apple
coconut
strawberry
-->
banana.txt
apple.txt
coconut.txt
strawberry.txt
私がいる最初の問題は、次のとおりです。は、どのように私は、ループ内の各ファイルのファイルハンドルのためのユニークな変数を割り当てるのですか?私はこのような何かを書くだろうが、それが進むべき道だ場合、私は知らない。
open(my $tokensfh, '<', $tokensfile)
or die "cannot open file $tokensfile";
chomp(my @tokenslines = <$tokensfh>);
close $tokensfh;
foreach my $token(@tokenslines) {
open(my $token.'fh', '>>', $token."data.txt");
}
ビットさらに私は$トークンに対して、他のデータと一致しますが、私が対処する方法がわからないよラインの下変数:
foreach my $somedata(@data) {
my $datatoken = $somedata=~ /<fruit>(.+)<\/fruit>/;
# Do I need a new variable name here?
foreach my $tokensline(@tokenslines) {
if ($datalinetoken eq $datatoken) {
# print $somedata to specific file
print $tokensline.'fh' "average run time\n";
}
}
}
新しい変数名が必要ですか?ない場合は、どのように私は、変数割り当ての問題を得ることなく、以前の変数を再利用することができますか?これを行うより良い方法はありますか? (すべての質問にお答えください。)
'my%fh;私の$トークンをforeachする(@tokenslines){ open(my $ fh {$ token}、 '>>'、$ token。 "data.txt")または "恐ろしい死" } '? –
きちんとしたOOフレーバーがケトルに投げ込まれているかもしれません; – laune
ああ、いくつかのサンプルデータは良いでしょう。これはXMLのように見えるので、XMLパーサーが推奨されます。 – Sobrique