I次のコードを持っている:コードの後半ではperlでは、実行時にファイルハンドルが解決されたファイルにどのように印刷できますか?
use strict;
my $org_file_hash = {
'S6' => '/path/to/file/filename.txt_S6',
'S8' => '/path/to/file/filename.txt_S8',
'S2' => '/path/to/file/filename.txt_S2',
'S0' => '/path/to/file/filename.txt_S0',
'S00' => '/path/to/file/filename.txt_S00'
};
my $filehandles;
for(keys %{$org_file_hash})
{
my $key=$_;
open(my $key,">",$org_file_hash->{$key}) || die "Cannot open ".$org_file_hash->{$key}." for writing: $!";
push(@{$filehandles},$key);
}
を、I GET $ orgの "S2" など。 $の組織に基づいて
my $org="S2";
私はそれが/path/to/file/filename.txt_S2である。この場合には及びで印刷する必要があるファイルを決定します。
これを実現するために、私は次のことをやっているが、それは動作しません:
my $org="S2";
print {$org} "hello world\n";
私は次のエラーを取得する:
Can't use string ("S2") as a symbol ref while "strict refs" in use at new_t.pl line 22.
助けてください。
警告を「警告を使用」で有効にすると、Perlは '$ key'が再宣言されたことを警告します。あなたの意図は、ファイルハンドル名としての値を使うことだったと思います。 –
常に、*常に* use strictとuse warningsの両方を使用します。エラーメッセージが何を意味するかわからない場合は、 'use diagnostics;'も追加してください。 – Ether