我尝试编写一个子例程,该子例程遍历字符串列表并打印每个字符串,但它不起作用:
use HTTP::Date;
my @date_strings_array = ("Jun 1, 2026", "Aug 26, 2018 GMT-05:00", "Aug 26, 2018");
print_datetimes(@date_strings_array);
sub print_datetimes {
my @date_string_array = shift;
foreach $date_string (@date_string_array) {
print("The current iteration is $date_string.");
}
}
它仅显示第一次迭代:
$ perl /example/test.pl
The current iteration is Jun 1, 2026.
为什么这只会打印数组中的第一项?
答案 0 :(得分:3)
shift仅检索一个元素。不过,您可以分配整个参数数组:
my @date_string_array = @_;
for my $date_string (@date_string_array) {
...
答案 1 :(得分:1)
您需要将检举传递给数组。
my @date_strings_array = ("Jun 1, 2026", "Aug 26, 2018 GMT-05:00", "Aug 26, 2018");
print_datetimes(\@date_strings_array);
sub print_datetimes {
my $date_string_array = shift;
foreach my $date_string (@$date_string_array) {
print "The current iteration is $date_string.\n";
}
}