скрипт печатает количество входных линий, я хочу, чтобы напечатать количество входных линий, которые присутствуют в другом файлеPerl скрипт Grep
#!/usr/bin/perl -w
open("file", "text.txt");
@todd = <file>;
close "file";
while(<>){
if(grep(/^$_$/, @todd)){
#if(grep @todd, /^$_$/){
print $_;
}
print "\n";
}
если, например, файл содержит
1
3
4
5
7
и входной файл, который будет читаться из содержит
1
2
3
4
5
6
7
8
9
Я хочу, чтобы напечатать 1,3,4,5 и 7 , но 1-9 печатаются вместо
UPDATE ****** Это мой код в настоящее время, и я получаю эту ошибку Readline() на закрытом файловом дескрипторе Тодда на ./may6test.pl линии 3.
#!/usr/bin/perl -w
open("todd", "<text.txt");
@files = <todd>; #file looking into
close "todd";
while(my $line = <>){
chomp $line;
if (grep(/^$line$/, @files)) {
print $_;
}
print "\n";
}
, который не имеет никакого смысла для меня, потому что у меня есть этот другой сценарий, который в основном делает то же самое
#!/usr/bin/perl -w
open("file", "<text2.txt"); #
@file = <file>; #file looking into
close "file"; #
while(<>){
$temp = $_;
$temp =~ tr/|/\t/; #puts tab between name and id
my ($name, $number1, $number2) = split("\t", $temp);
if (grep(/^$number1$/, @file)) {
print $_;
}
}
print "\n";
Это почти то же самое, что и [этот] (http://stackoverflow.com/q/37079760/5830574), созданный 3 часа назад. Если вы один и тот же человек, я настоятельно рекомендую *** не удваивать пост *** из разных учетных записей. Кроме того, я рекомендую посмотреть те же самые вопросы, которые уже размещены на SO. – PerlDuck
Правило большого пальца: избегайте использования '$ _' неявно или явно по этой причине. 'map' и' grep' являются исключениями, потому что требуется их использование. – Schwern