如何将某些字符串连接到数组的每个元素

时间:2015-03-12 09:54:13

标签: perl

我有一个文件WordNetTest3.txt,它有一些用空格分隔的单词,是名为@unique_words的数组元素。我想在第一个元素的末尾连接TXD,RXD,CTS和RTS,这些应该成为单独数组的四个元素。然后我想在第二个元素的末尾连接TXD,RXD,CTS和RTS,这些应该成为第二个数组的四个元素,依此类推@unique_words的所有元素.I' v为一个元素编写代码但是对于我无法迭代的所有元素。

my $a='TXD';
my $b='RXD';
my $c='CTS';
my $d='RTS';


my $filenam = 'WordNetTest3.txt' ;
open my $f , '<' , $filenam or die "Cannot read '$filenam': $!\n" ;



for ( @unique_words ) {
$array0[0] =$unique_words[0].$a;
$array0[1] =$unique_words[0].$b;
$array0[2] =$unique_words[0].$c;
$array0[3] =$unique_words[0].$d;
}

open $f , '>' , $filenam or die "Cannot read '$filenam': $!\n" ;

foreach (@array0) {
print $f "$_\n";
}

#print $f "@array0\n" ;
close $f ;

1 个答案:

答案 0 :(得分:2)

在您open文件后,您需要阅读它。 Perl并不知道您希望文件名“成为@unique_words。”

您可以使用以下方式逐行阅读文件:

while ( my $line = <$f> ) {

}

同样 - 即使你已经正确宣布@array0,你也会每次都覆盖它,这对你没什么好处。

另外:开启use strict;use warnings;。将代码发布到Stack Overflow时,它们几乎是必需的。

这样的事情可能会起到作用:

use strict;
use warnings;

my @suffixes = qw ( TXD RXD CTS RTS );

my $filenam = 'WordNetTest3.txt';
open my $input,  '<', $filenam       or die "Cannot read '$filenam': $!\n";
open my $output, '>', "$filenam.NEW" or die $!;

while ( my $line = <$input> ) {
    chomp($line);
    for my $suffix (@suffixes) {
        print {$output} $line . $suffix, "\n";
    }
}

close($input);
close($output);

(假设它在我们的文件中每行一个字)