【发布时间】:2020-11-25 00:09:55
【问题描述】:
我知道pushing 只能传递给数组,而不是哈希。但是允许将键值对直接推送到散列会更方便(我仍然很惊讶在 perl 中这是不可能的)。我有一个例子:
#!/usr/bin/perl -w
#superior words begin first, example of that word follow
my @ar = qw[Animals,dog Money,pound Jobs,doctor Food];
my %hash;
my $bool = 1;
sub marine{
my $ar = shift if $bool;
for(@$ar){
my @ar2 = split /,/, $_;
push %hash, ($ar2[0] => $ar2[1]);
}
}
marine(\@ar);
print "$_\n" for keys %hash;
这里我有一个数组,它有两个单词,分别用, 逗号分隔。我想从中做一个散列,使第一个成为键,第二个成为值(如果它缺少值,最后一个Food 字也是如此,那么根本没有值-> 只是 undef。如何用 perl 做吗?
输出:
Possible attempt to separate words with commas at ./a line 4.
Experimental push on scalar is now forbidden at ./a line 12, near ");"
Execution of ./a aborted due to compilation errors.
【问题讨论】: