1 2 3 4 5 6 7 8
my @files = qw( /foo/bar.txt /foo/boo.txt ); for my $file (@files) { open my $fh, "<", $file or die "Could not open $file: $!"; # tu was mit $fh }
for my $file (@files) {
1 2 3 4 5
open my $fh, "<", "file-list.txt" or die $!; while (my $line = <$fh>) { chomp $line; push @files, $line; }
2012-07-06T10:02:59 INIINGdas Problem ist, dass die Pfade nicht untereinander sind.
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
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $file_file='file.txt'; my @regexp=( qr/\.txt$/, qr/\.csv$/, qr/\.ini$/, qr/\.cnf$/, ); open(my $in_fh, '<', $file_file) or die("Error open $file_file ($!)\n"); my @files=( [ ], [ ], [ ], [ ], ); while(my $line=<$in_fh>) { chomp($line); my $pos (0..$#regexp) { if($line=~$regexp[$pos]) { puhs(@{$files[$pos]},$line); } } } print Dumper(\@files);
2012-07-06T10:51:18 INIINGkann ich das durchlaufen lassen bis zum ersten ergebnis, speicher und weiter ab dem 2. usw.?
2012-07-06T09:27:44 INIINGso oft wie ich irgendwie nutzte hat das auch geklappt.
QuoteWas ist "irgendwie"?So oft wie ich "irgendwie" nutzte, hat das auch geklappt.
1 2 3 4 5 6
my @infiles; #... # Uebergabeparameter einlesen GetOptions ('i=s' , \@infiles);
push(@infiles,@ARGV);
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl use strict; use warnings; use Getopt::Long; # Parameteruebergabe my @infiles; my $outfile='C:\Complete_List.datafield'; # Uebergabeparameter einlesen GetOptions ('i=s' , \@infiles); push(@infiles,@ARGV); print "$_\n" for(@infiles);
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
use warnings; use Getopt::Long; # Parameteruebergabe #use strict; my $infile1; # Uebergabeparameter einlesen GetOptions ('i=s' , \$infile1); print "ueberarbeitetesperlskript.pl, Version 1.0"; my @Datafield_List; my @Suchergebnisse; # Datafield Datei einlesen open (FILE1, "<$infile1") || die "\n Die Datei '$infile1' konnte nicht geoeffnet werden\n"; @files = split(//, &infile1); while (@files = readdir(FILE1)){ print " @files "; for($i=0; $i < (@files); $i++){ $pfad = $files[$i]; opendir (File, $pfad) || die "\n Die Datei $infile1 konnte nicht geoeffnet werden ($!)\n"; my @tmp; @tmp = File; push (@Datafield_List,"\n"); push (@Datafield_List,@tmp); close File; } } my $line_nr=0; while(my $zeile=@Datafield_List) { chomp($zeile); $line_nr++; # <name...parameter...> if($zeile =~ m/<(\w+)\s+(.*?)\s*>/i) { my $name=$1; my $params=$2; next unless($name eq 'Measurement' or $name eq 'Parameter'); # key="wert" my $aktZeile; while($params =~ /(\w+)\s*=\s*"([^"]+)"\s*/gc) { my $key=$1; my $val=$2; # weiter wenn $key nicht "nameAsap2" oder "name" next unless( $key eq 'nameAsap2' or $key eq 'name' ); find_double(@Datafield_List); # wenn Länge des Inhalts größer als 32 Zeichen if(length($key) > 32) { my $File = $infile1; #Problem, da die gesamte Liste eingelesen wird. Beim Einlesen vllt etwas noch in das Array schreiben, also zwischen den beiden push-Operationen noch ein push Opberator "bla den Dateinamen" print "\n !!! FEHLER !!! \n"; print "In der Datei '$File' Zeile $line_nr besitzt folgender Strukturmember eine groessere Zeichenkette als 32 Zeichen: '$key'\n" #print "Der Bezeichnername lautet '$val'\n"; } my $value; # Wert in $val noch unbekannt ist? while (@Suchergebnisse){ if($_ =~ m/$val/i){ print "\n !!! FEHLER !!! \n"; print "\nDer '$key': '$val' ist doppelt vergeben. \n"; } else { # den Wert in $val oder $key zur Liste der Suchergebnisse hinzufügen $Suchergebnisse[++$#Suchergebnisse] = $val; } } } } print " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ROGER !!!!!!!!!!!!!!!!!!!!!!! "; }
2012-07-13T12:54:28 INIINGCode (perl): (dl )1 2 3 4 5# Datafield Datei einlesen open (FILE1, "<$infile1") || die "\n Die Datei '$infile1' konnte nicht geoeffnet werden\n"; @files = split(//, &infile1);
Quoteccperl C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl -i C:\User\views\snapshot_views\V_JL03/scwcc_ed_tc/Module/Global/Pub/Global_types.datafield C:\User\views\snapshot_views\V_JL03/scwcc_ed_tc/Module/MCU/CCU/CCC/src/CCC_DQC_Param.datafield C:\User\views\snapshot_views\V_JL03/scwcc_ed_tc/Module/MCU/CCU/CCC/src/CCC_DQC_Measure.datafield
syntax error at C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl line 32, near "$filename ("
syntax error at C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl line 36, near ");"
syntax error at C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl line 106, at EOF
Execution of C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl aborted due to compilation errors.
omake: Shell line exit status 255. Stop.
2012-07-17 10:37:08,88
C:\User\views\snapshot_views\V_JL03\scwcc_ed_tc\Image>
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101use warnings; use Getopt::Long; # Parameteruebergabe use strict; use File::Temp qw(tempfile tempdir); use File::Glob; my $infile1; # Uebergabeparameter einlesen GetOptions ('i=s' , \$infile1); print "ueberarbeitetesperlskript.pl, Version 1.0"; my @Datafield_File_List; my @Datafield_List; my @Suchergebnisse; my @Datafield_List_tmp; my $Datafield_List_tmp; my $anzahl, my $filename; # Datafield Datei einlesen open (FILE1, "<$infile1") || die "\n Die Datei '$infile1' konnte nicht geoeffnet werden\n"; my @files; my $line; while (<FILE1>){ #@files = split(/\s+/, <FILE1>); @files = glob ("*.datafield"); #$anzahl=@Datafield_File_List; #foreach $line(@files){ foreach($filename (@files)){ #$Datafield_List_tmp = shift(@files); print "Hier!!!!!!!!!!!!!!!!!!!!!!!! '$filename'"; opendir (File, $filename) || die "\n Die Datei $infile1 konnte nicht geoeffnet werden ($!)\n"; @Datafield_File_List=readdir(File); chomp(@Datafield_File_List); push (@Datafield_List,@Datafield_File_List); chomp(@Datafield_List); print"@Datafield_List"; } } while(@Datafield_List) { my $line_nr=0; my $zeile; chomp($zeile); $line_nr++; # <name...parameter...> if($zeile =~ m/<(\w+)\s+(.*?)\s*>/i) { my $name=$1; my $params=$2; next unless($name eq 'Measurement' or $name eq 'Parameter'); # key="wert" my $aktZeile; while($params =~ /(\w+)\s*=\s*"([^"]+)"\s*/gc) { my $key=$1; my $val=$2; # weiter wenn $key nicht "nameAsap2" oder "name" next unless( $key eq 'nameAsap2' or $key eq 'name' ); find_double(@Datafield_List); # wenn Länge des Inhalts größer als 32 Zeichen if(length($key) > 32) { my $File = $infile1; #Problem, da die gesamte Liste eingelesen wird. Beim Einlesen vllt etwas noch in das Array schreiben, also zwischen den beiden push-Operationen noch ein push Opberator "bla den Dateinamen" print "\n !!! FEHLER !!! \n"; print "In der Datei '$File' Zeile $line_nr besitzt folgender Strukturmember eine groessere Zeichenkette als 32 Zeichen: '$key'\n" #print "Der Bezeichnername lautet '$val'\n"; } my $value; # Wert in $val noch unbekannt ist? while (@Suchergebnisse){ if($_ =~ m/$val/i){ print "\n !!! FEHLER !!! \n"; print "\nDer '$key': '$val' ist doppelt vergeben. \n"; } else { # den Wert in $val oder $key zur Liste der Suchergebnisse hinzufügen $Suchergebnisse[++$#Suchergebnisse] = $val; } } } } close FILE1; }
foreach $element (@array) { do_something(); }
1 2 3 4 5 6 7 8 9
while (<FILE1>){ #@files = split(/\s+/, <FILE1>); #@files = glob ("*.datafield"); $Datafield_List_tmp=<FILE1>; @Datafield_List_tmp =split(//,$Datafield_List_tmp); foreach(@Datafield_List_tmp){ print "$_"; }
2012-07-17T10:15:33 INIINGCode (perl): (dl )1 2 3 4 5 6 7while (<FILE1>){ # <--- 1 $Datafield_List_tmp=<FILE1>; # <--- 2 @Datafield_List_tmp =split(//,$Datafield_List_tmp); # <--- 3 foreach(@Datafield_List_tmp){ print "$_"; }
2012-07-20T10:00:03 INIINGNunja, einfacher und zeiteffizienter war es nun nach den letzten antworten mir ein ca 1000 seitiges Perl buch zu besorgen und hier die Antworten zu finden.