1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#Datei 1 enthaelt Werte, welche in Datei 2 gesucht werden
cat > testfile_1 <<-EOF
1
11
2
22
3
33
EOF
cat > testfile_2 <<-EOF
1
22
3
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/perl -w
use strict;
my $TestFile_Read = "testfile_1";
my $TestFile_Search = "testfile_2";
if( ! open( RFH, $TestFile_Read))
{
print STDERR "Test File '$TestFile_Read' kann nicht gelesen werden !\n";
exit 1;
}
if( ! open( SFH, $TestFile_Search))
{
print STDERR "Test File '$TestFile_Search' kann nicht gelesen werden !\n";
exit 1;
}
while( my $line_r = <RFH> )
{
chomp $line_r;
# print "File_Read: $line_r\n";
open( SFH, $TestFile_Search);
while( my $line_s = <SFH> )
{
chomp $line_s;
# print "File_Search: $line_s\n";
if( $line_r eq $line_s )
{
print "Gefunden ($TestFile_Read in $TestFile_Search): $line_s\n";
$found = 1;
last;
}
}
}
close( SFH);
close( RFH);
exit 0;
1 2 3 4 5
if( ! open( RFH, $TestFile_Read)) { print STDERR "Test File '$TestFile_Read' kann nicht gelesen werden !\n"; exit 1; }
1 2
open (my $rfh, '<', $TestFile_Read) or die "Test File '$TestFile_Read' kann nicht gelesen werden : '$!'\n";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#!/usr/bin/perl -w use strict; my $TestFile_Read = "testfile_1"; my $TestFile_Search = "testfile_2"; # Suchdatei lesen aufbauen und Pattern aufbauen open (my $sfh, $TestFile_Search) or die "Test File '$TestFile_Search' kann nicht gelesen werden: '$!'\n"; my @search = <$sfh>; close $sfh; my $pattern = join "|", map { quotemeta } @search; # Testdatei lesen und durchschleifen open (my $rfh, $TestFile_Read) or die "Test File '$TestFile_Read' kann nicht gelesen werden: '$!'\n"; while( my $line_r = <$rfh> ) { # print "File_Read: $line_r"; if( $line_r =~ /^($pattern)$/ ) { print "Gefunden ($TestFile_Read in $TestFile_Search): $line_r"; } } close $rfh;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#!/usr/bin/perl -w use strict; use autodie; use List::Util qw/any/; my $TestFile_Read = "testfile_1"; my $TestFile_Search = "testfile_2"; # Suchdatei lesen aufbauen und Pattern aufbauen open (my $sfh, $TestFile_Search); my @search = <$sfh>; close $sfh; # Testdatei lesen und durchschleifen open (my $rfh, $TestFile_Read); while( my $line_r = <$rfh> ) { # print "File_Read: $line_r"; if( any { $line_r eq $_ } @search ) { print "Gefunden ($TestFile_Read in $TestFile_Search): $line_r"; } } close $rfh;
1
2
3
4
5
6
while( my $line_r = <RFH> )
{
# open( SFH, $TestFile_Search);
while( my $line_s = <SFH> )
{
2021-09-16T12:30:31 bora99Wenn ich das open in der while-Schleife weglasse, wie
Code: (dl )1
2
3
4
5
6while( my $line_r = <RFH> )
{
# open( SFH, $TestFile_Search);
while( my $line_s = <SFH> )
{
dann wird nur ein Ergebnis erzielt (sollte mehrere Ergebnisse sein)
2021-09-16T12:30:31 bora99Zur Frage : Bist Du vielleicht auf RedHat?
SUSE Linux Enterprise Server 12 SP5 ( Perl Version Standard mit SP5 ) ...
Module müssen "andere" installieren ...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#!/usr/bin/perl use warnings; use strict; my $TestFile_Read = "testfile_1"; my $TestFile_Search = "testfile_2"; my ($rfh, $sfh, $line_r, $line_s); open($rfh, "<", $TestFile_Read) or die "Test File '$TestFile_Read' kann nicht gelesen werden : '$!'\n"; open($sfh, "<", $TestFile_Search) or die "Test File '$TestFile_Search' kann nicht gelesen werden : '$!'\n"; my @searches = <$sfh>; chomp(@searches); close($sfh); while($line_r = <$rfh> ) { chomp($line_r); for $line_s (@searches) { if ($line_r eq $line_s) { print "Gefunden ($TestFile_Read in $TestFile_Search): $line_s\n"; last; } } } close($rfh);