【发布时间】:2018-01-17 23:28:06
【问题描述】:
我尝试在 sub 中将 csv 解析为 perl 中的哈希,然后返回作为参数传递给 sub 的键值。 CSV 文件是这样的:
host1, 12121
host2, 34324252345
host3, 45345
host4, 56363425
host5, 3.1
hostn, 435345
我的代码是这样的:
#!/usr/bin/perl -w
my $host_key = getValue('host1');
print $host_key;
sub getValue {
my $host_file = 'test.csv';
my $hostname = $_[0];
chomp($hostname);
my %hash;
open my $fh, '<', $host_file or die "Cannot open: $!";
while (my $line = <$fh>) {
my @hostname_lines = split /,/, $line;
my $hostname = shift @hostname_lines;
$hash{$hostname} = \@hostname_lines;
}
close $fh;
my $host_value = $hash{$hostname};
return $host_value;
}
当我运行此代码时,我的返回值为 ARRAY(0x6b72d0),但我希望返回值为 12121
【问题讨论】:
-
我的 $host_value = $hash{'host1'} 所以我希望 $host_value = 12121
-
已发布,直接修复该错误,以及其他一些选项。 (我删除了我发布的一些 cmets。)
标签: arrays perl csv hash reference