给定三个标量,填充哈希的perl语法是什么,其中一个标量是关键,另一个确定填充两个数组中的哪一个,第三个是附加到其中一个数组?例如:
my $weekday = "Monday";
my $kind = "Good";
my $event = "Birthday";
并且只给出了在循环中获得的标量而不是它们的特定值,我想要一个哈希:
my %Weekdays = {
'Monday' => [
["Birthday", "Holiday"], # The Good array
["Exam", "Workday"] # The Bad array
]
'Saturday' => [
["RoadTrip", "Concert", "Movie"],
["Yardwork", "VisitMIL"]
]
}
我知道如何在散列中向数组附加值,例如,如果键是单个数组:
push( @{ $Weekdays{$weekday} }, $event);
在循环中使用,可以给我:
%Weekdays = {
'Monday' => [
'Birthday',
'Holiday',
'Exam',
'Workday'
]
}
我认为哈希键是特定的工作日,值应该是二维数组。我不知道perl语法,比如,将生日进入哈希作为工作日数组的元素[0] [0],并且下一次通过循环,将另一个事件推送到[0] [1]或[1] [0]。同样,我不知道访问它的语法。
答案 0 :(得分:3)
使用你的变量,我会这样写:
push @{ $Weekdays{ $weekday }[ $kind eq 'Good' ? 0 : 1 ] }, $event;
但是,我可能只是制作好/坏说明符键。鉴于我的笨蛋:
use autobox::Core;
( $Weekdays{ $weekday }{ $kind } ||= [] )->push( $event );
请注意我在这里写的方式,在开始之前,表达式都不关心数组是否存在。
答案 1 :(得分:1)
有什么理由
push @{ $Weekdays{Monday}[0] }, "whatever";
不适合你吗?