#!/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; ########################################################################