遍历数组的问题

时间:2018-06-19 15:27:59

标签: perl

我尝试编写一个子例程,该子例程遍历字符串列表并打印每个字符串,但它不起作用:

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.

为什么这只会打印数组中的第一项?

2 个答案:

答案 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";  
    }
 }