這是一個測試程序:
#! /usr/bin/env perl
use strict;
use warnings;
use feature qw(say);
use Data::Dumper;
my @states = ('Montana', 'Nebraska', 'Nevada',
'New Hampshire', 'New Jersey', 'New Mexico');
say "Dumping \@states\n" . Dumper @states;
say "\nDumping \\\@states\n" . Dumper \@states;
foreach my $state (@states) {
print $state;}
這裏是我的結果:
$ test.pl
MontanaNebraskaNevadaNew HampshireNew JerseyNew Mexico$
打印所有的州。但是,您在print
的末尾缺少\n
。我會使用say
而不是print
,因爲say
會自動爲您添加\n
。不太容易出錯。
我會這樣寫循環:
for my $state (@states) {
say $state;
}
然而,正如你所看到的,我的自卸車輸出@states
是一樣的你。這意味着我的@states
與您的相同,並且我打印出所有狀態(儘管不在單獨的行中)。
我想也許你以某種方式對每個國家的名字,並且結束一個CR是造成問題:
#! /usr/bin/env perl
use strict;
use warnings;
use feature qw(say);
use Data::Dumper;
my @states = ("Montana\r", "Nebraska\r", "Nevada\r",
"New Hampshire\r", "New Jersey\r", "New Mexico\r");
say "Dumping \@states\n" . Dumper @states;
say "\nDumping \\\@states\n" . Dumper \@states;
foreach my $state (@states) {
print $state;}
但產量不您的輸出匹配:
$ ./test.pl
Dumping @states
';AR1 = 'Montana
';AR2 = 'Nebraska
';AR3 = 'Nevada
';AR4 = 'New Hampshire
';AR5 = 'New Jersey
';AR6 = 'New Mexico
Dumping \@states
$VAR1 = [
', 'Montana
', 'Nebraska
', 'Nevada
', 'New Hampshire
', 'New Jersey
' 'New Mexico
];
$ w Mexicoire
不僅Dumper與你有什麼不同,而且我也沒有打印出Montana
,因爲我每次打印時都會覆蓋這些狀態。
別的東西是怎麼回事,你得給我們更多的信息到底是怎麼回事。作爲老程序員的格言說:它的工作原理我機上。
顯示您的foreach循環代碼。 – toolic
如果我們沒有看到你的循環,很難猜測你的循環出了什麼問題。 – ikegami
請注意,將數組和哈希的引用傳遞給'Dumper'將提供更清晰的結果。 (例如'print Dumper(\ @states);') – ikegami