#!/usr/bin/perl use strict; use warnings; # das Modul Data::Dumper laden # exportiert die Funktion "Dumper" use Data::Dumper; # Verzeichnis in dem gesucht werden soll my $dir='/ver1/ver2/ver3/'; # Jobs zu den Nodes in einem Hash speichern my %node; # alle Dateien im Verzeihnis durch gehen for my $file (glob("$dir*")) { # Datei öffnen und prüfen ob es funktioniert hat if(open(my $fh, '<', $file)) { # Datei Zeilenweise durch gehen while(my $line=<$fh>) { chomp($line); ## Wenn eine Zeile "node" mit einer Nummer und Job mit einer Nummer zusammen mit "exeeds" auftaucht, ## Dann die NodeID und JobID zusammen mit der Meldung speichern. #$node{$1}{$2}=$3 if($line=~/node(\d+).*?job (\d+) exceeds (.+)$/); # das kann man auch anders schreiben: if(index('exceed',$line)>-1) { # zeile an den "|" spliten my @col=split('|', $line); # nodeid ermitteln my ($nodeid)=$col[2]=~/(\d+)/; # jobid ermitteln my ($jobid)=$col[4]=~/job\s*(\d+)/; # message ermitteln my ($message)=$col[4]=~/exceeds (.+)$/; # alles zusammen speichern $node{$nodeid}{$jobid}=$message; } } # Datei schließen close($fh); } else { # waren wenn das Öffnen der Datei fehlschlug warn("ERROR open $file ($!)\n"); } } # Mit Dumper kann man Datenstrukturen formatiert ausgeben lassen. # das ist ganz nützlich um zu sehen was man überhaupt an Daten hat. print Dumper(\%node);