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