Thread 2 Dateien/Tabellen mergen/vergleichen (2 answers)
Opened by Chibi at 2012-01-07 23:04

rosti
 2012-01-08 12:22
#155337 #155337
User since
2011-03-19
3194 Artikel
BenutzerIn
[Homepage]
user image
Hi,
das Mergen geht am Besten über einen Hash. Untenstehend ein bischen Code dazu:

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
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/perl

use strict;
use warnings;
use IO::File;
use Data::Dumper;

# Tabellen auf hash lesen: t1.txt, t2.txt
my $tab1 = tabContent('t1.txt');
my $tab2 = tabContent('t2.txt');

# mergen
my %result = (%{$tab1}, %{$tab2}); # Keys in {1} kriegen Update von {2] 
print Dumper \%result;


sub tabContent{
        my $file = shift;
        my $fh = IO::File->new;
        $fh->open($file, "r") or die $!;
        my $r = {}; # hashref return

        # erste Zeile mit den Überschriften einlesen
        my $headline = <$fh>; # weg damit
        # lese den Rest
        while(my $line = <$fh>){
                my $namedef = Names->new(
                        {0 => 'V1', 1 => 'V2', 2 => 'V3', 3 => 'V4', 4 => 'V5', 5 => 'V6'},
                        [split /\s+/, $line]
                );
                $r->{$namedef->{V1}} = $namedef;
        }
        $fh->close;
        return $r;
}

# ein kleines Helferlein
package Names;

###########################################################################
# Rolf Rost, 14.2.2011
# Anonyme Array-Elemente bekommen Namen
###########################################################################
use strict;

# Setzt ein Array in ein Objekt um
sub new{
        my $class = shift;
        my $maps  = shift; # {3 => 'Day', 4 => 'Month', 5 => 'Year'}
        my $aref  = shift; # p.e. from localtime, stat, etc.
        return if ref $maps ne 'HASH';
        return if ref $aref ne 'ARRAY';
        my $self  = {};
    for(my $i = 0; $i < scalar(@$aref); $i++){
       $self->{$maps->{$i}} = $aref->[$i] if exists $maps->{$i};
    }
    
    return bless $self, $class;
}
1; ########################################################################

Last edited: 2012-01-08 12:24:24 +0100 (CET)

View full thread 2 Dateien/Tabellen mergen/vergleichen