我有一个文件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 ;
答案 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);
(假设它在我们的文件中每行一个字)