2015-03-12 2 views
0

У меня есть файл WordNetTest3.txt, который содержит несколько слов, разделенных пробелом, и элементы массива, называемые @unique_words. Я хочу объединить TXD, RXD, CTS и RTS в конце первого элемента, и они должны стать четырьмя элементами отдельного массива. Затем снова я хочу объединить TXD, RXD, CTS и RTS в конце второго элемента, и они должны стать четырьмя элементами второго массива и т. Д. Со всеми элементами @unique_words. Я написал код для одного элемента, но для все элементы, которые я не могу повторить.Как связать определенные строки с каждым элементом массива

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

Это не совсем понятно, какой результат вы хотите. Добавьте экстракт входного файла и ожидаемый результат. – Toto

ответ

2

После того как вы open ваш файл, вам необходимо прочитать его. Perl не знает, что вы ожидаете, что имя файла «сделайте так» в @unique_words.

Вы можете читать строку за строкой, используя:

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

} 

Likewise - даже если вы объявили @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); 

(Предполагается, что это одно слово в каждой строке в нашем файле)

+0

это хорошо !! решил мою проблему ... спасибо очень много :) – Grace90

Смежные вопросы