Thread Lesen Zeilen von einer Datei, verändern Zeilen in einer zweiten Datei (9 answers)
Opened by bora99 at 2016-11-22 11:45

bora99
 2016-11-29 23:02
#185687 #185687
User since
2009-12-05
54 Artikel
BenutzerIn
[default_avatar]
Ich habe weiters mit Variante 1 versucht statt hinzufügen von Zeilen , die Zeilen in der 2. Datei zu löschen .

Folgenden Code habe ich verändert :

Code: (dl )
1
2
    if ( first { $_ eq $to_save } @status ) {
pop @status, $to_save;


Es wird von 2 Zeilen nur eine Zeile gelöscht und es kommt Info

Useless use of private variable in void context at ./report_del.pl line 43.

Code (perl): (dl )
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
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/perl
use strict;
use warnings;

# use 5.010;

use List::Util qw( first );
use Tie::File;

die "Usage: $0 report status\n" if 2 != @ARGV;

my $report_file = shift @ARGV;
my $status_file = shift @ARGV;


# open report for reading
open my $rfh, '<', $report_file or die "open($report_file,<) failed: $!";
# tie status file to array
tie( my @status, 'Tie::File', $status_file ) or die "Cannot tie $status_file: $!";

LINE:
while ( my $line = <$rfh> ) {
    warn "(D) read: $line\n";

    # skip empty lines or with # at the start of a line 
    next LINE if $line =~ m/^[\s]*$|^#/;

    chomp $line;
    # split into fields
    my ( $field1, $field2, $date1, $date2 ) = split m/\t/, $line;

    # no action if "date2" is not "-"; read next line
    next LINE if     $date2 ne '-';

    # prepare a string to compare from first three fields
    my $to_save = join "\t", $field1, $field2, $date1;

    # write to status file if string has not been seen yet
    # example : $foo = first { defined($_) } @list    # first defined value in @list
    #           $foo = first { $_ > $value } @list    # first value in @list which
    #                                                 # is greater than $value
    if ( first { $_ eq $to_save } @status ) {
        pop @status, $to_save;
    }

}

close $rfh;

__END__

View full thread Lesen Zeilen von einer Datei, verändern Zeilen in einer zweiten Datei