如何将字符串推送到数组并在换行符中打印每个字符串?

时间:2015-09-28 00:06:10

标签: arrays perl file

#!/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,一切正常。每个地址都有自己的行。 (地址各端的换行符。)

如何修复@sender?

感谢。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

否则使用列表分隔符

$" = "\n";
print "@sender\n";
print "@receiver\n";

答案 2 :(得分:0)

我想我知道答案。

我必须选择已经包含换行符的每个接收器。