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; # array als referenz von 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; } package main; use strict; use warnings; use Data::Dump qw(dump); # Erste Zeile sei my $z1 = "Name,Vorname,Alter"; my @header = split ",", $z1; my $helper = {}; foreach my $i(0..$#header){ $helper->{$i} = $header[$i]; } #print dump $helper; # { "0" => "Name", 1 => "Vorname", 2 => "Alter" } my $result = {}; my $i = 1; # Zeilennummer while(my $line = ){ chomp $line; my $o = Names->new($helper, [split ",", $line]); $result->{$i} = $o; $i++; } print dump $result; #{ # 1 => bless({ Alter => 45, Name => "Meier", Vorname => "Hans" }, "Names"), # 2 => bless({ Alter => 54, Name => "Hansel", Vorname => "Horst" }, "Names"), # 3 => bless({ Alter => 33, Name => "Horst", Vorname => "Anna" }, "Names"), #} # CSV __END__ Meier,Hans,45 Hansel,Horst,54 Horst,Anna,33