#!/usr/bin/perl use strict; use warnings; my %hash; # Daten zeilenweise aus Filehandle (hier: DATA) einlesen while (my $row = ) { # Newline entfernen chomp $row; # Zeile in Array speichern my @f = split /;/, $row; # Zeile verwerfen, wenn dieser Schlüssel schon existiert next if $hash{$f[0]}->{$f[3]}->{$f[4]}; # Zeile als ArrayRef in verschachteltem Hash speichern $hash{$f[0]}->{$f[3]}->{$f[4]} = \@f; } # Den verschachtelten Hash in einer verschachtelten Schleife auslesen for my $f0 (sort keys %hash) { for my $f3 (sort keys %{$hash{$f0}}) { for my $f4 (sort keys %{$hash{$f0}->{$f3}}) { # Das ArrayRef als Array zwischenspeichern my @f = @{$hash{$f0}->{$f3}->{$f4}}; # SQL-Statement generieren und ausgeben. my $sql = "INSERT into FOO (BAR, BAZ, BAF, BAM, BAX, BAL) values (" . join(', ', @f) . ");"; print "$sql\n"; } } } __DATA__ XXC;0.0090;0.0290;07/18/2014;03:36:35;IN XXC;0.0040;0.0240;07/18/2014;03:50:48;IN XXC;0.0020;0.0220;07/18/2014;03:50:48;IN