我有以下代碼:在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);
}
在代碼中,我得到$組織爲「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.
請幫助。
如果您使用`use warnings`啓用警告,Perl會警告您'$ key`重新聲明。我猜你的意圖是使用它的價值作爲文件句柄的名稱 – 2011-01-26 16:10:18