2015-09-28 26 views
-1
#!/usr/bin/perl 

use strict; 
use warnings; 

my $sender; 
my $receiver; 
my @sender; 
my @receiver; 

open (FILE, "enron.csv"); 

while (<FILE>) { 
    ($sender, $receiver) = split(/,/, $_); 
    push @sender, $sender; 
    push @receiver, $receiver; 
} 

print @sender; 
print @receiver; 

我正在閱讀的文件是電子郵件地址:對於每一行,有兩個地址用逗號分隔。我想將逗號的左側和右側的地址存儲在兩個單獨的數組中。如何將字符串推入數組並在換行符中打印它們中的每一個?

我遇到的問題是,當我打印@sender時,所有地址都鏈接在一起。它們之間沒有空白或換行符。

對於@receiver,一切正常。每個地址都有自己的路線。 (Newline在地址的每一端。)

如何解決@sender?

謝謝。

+0

大概就像'打印加入 「\ n」,@發件人' – KeepCalmAndCarryOn

+0

你知道我爲什麼要打印嗎?發送者和接收者以相同的方式,但結果的格式是不同的? –

+1

@NoahSong:因爲接收者從輸入文件中獲取「\ n」,而發件人不是。因此,您需要在發件人的代碼中明確添加「\ n」,以便在打印時看到與收件人相同的結果。 – Anand

回答

1

@receiver中的項目包含來自輸​​入文件的換行符。我首先通過在你的循環中調用chomp來消除它。然後,打印變得

print map { "$_\n" } @sender; 
print map { "$_\n" } @receiver; 

print "$_\n" for @sender; 
print "$_\n" for @receiver; 

use feature qw(say); 

say for @sender; 
say for @receiver; 
0

我想我知道答案。

我必須爲每個已經包含換行符的接收器chomp。

1

或者使用列表分隔

$" = "\n"; 
print "@sender\n"; 
print "@receiver\n"; 
相關問題