我在Perl中有一个程序我正在处理我需要多个键的位置,以及为每个键赋予多个值的方法,并通过能够读取它们并将它们写入外部文件来实现,具体取决于是否键匹配人输入的标准输入.我查看了几个站点并发现信息在读取数组哈希时有些有用,但没有写出来,我还需要能够在外部文件中添加到数组中.
这可能吗?
编辑:有没有办法可以用启动器Perl完成?我是初学者.数组的哈希似乎是使其工作的最佳方式,但我真正需要的是一种方法来显示同一个键的多个值,同时只显示一次键.
Jon*_*ler 15
例如,这个微观脚本:
#!/bin/perl -w
use strict;
use Data::Dumper;
my(%hash);
$hash{key1} = [ 1, "b", "c" ];
$hash{key2} = [ 4.56, "g", "2008-12-16 19:10 -08:00" ];
print Dumper(\%hash);
Run Code Online (Sandbox Code Playgroud)
生成此输出,可以清楚地编辑:
$VAR1 = {
'key2' => [
'4.56',
'g',
'2008-12-16 19:10 -08:00'
],
'key1' => [
1,
'b',
'c'
]
};
Run Code Online (Sandbox Code Playgroud)
还可以对其进行评估以将数据读回程序.
扩展示例以显示读入和打印输出...请注意,代码位于两个主要块中,块之间唯一的共同变量是文件名.
#!/bin/perl -w
use strict;
use Data::Dumper;
use FileHandle;
my $file = "data.out";
{
my(%hash);
$hash{key1} = [ 1, "b", "c" ];
$hash{key2} = [ 4.56, "g", "2008-12-16 19:10 -08:00" ];
my $str = Data::Dumper->Dump([ \%hash ], [ '$hashref' ]);
print "Output: $str";
my($out) = new FileHandle ">$file";
print $out $str;
close $out;
}
{
my($in) = new FileHandle "<$file";
local($/) = "";
my($str) = <$in>;
close $in;
print "Input: $str";
my($hashref);
eval $str;
my(%hash) = %$hashref;
foreach my $key (sort keys %hash)
{
print "$key: @{$hash{$key}}\n";
}
}
Run Code Online (Sandbox Code Playgroud)
该脚本的输出是:
Output: $hashref = {
'key2' => [
'4.56',
'g',
'2008-12-16 19:10 -08:00'
],
'key1' => [
1,
'b',
'c'
]
};
Input: $hashref = {
'key2' => [
'4.56',
'g',
'2008-12-16 19:10 -08:00'
],
'key1' => [
1,
'b',
'c'
]
};
key1: 1 b c
key2: 4.56 g 2008-12-16 19:10 -08:00
Run Code Online (Sandbox Code Playgroud)