Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8050[/thread]

lesen von zwei files



<< >> 7 Einträge, 1 Seite
esskar
 2006-06-02 15:29
#66961 #66961
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
da ja file 1 nichts mit file 2 zu tun hat, sind 2 schleifen schon sehr sinnvoll!
esskar
 2006-06-02 16:21
#66962 #66962
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ach so, klar
Code: (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
sub work_with_file {
my ( $filename, $addon ) = @_;
if ( open( FILE, "< $filename" ) ) {
while (<FILE>) {

$Datum = $_ if m/Date: /;
$Zeit = $_ if m/Time: /;
$errorFound = 1 if /Severity: Error/;

$lines .= $_;

#generate a new hash-hey
if ( $Zeit && $Datum && $errorFound ) {
$Zeit =~ s/\D//g;
$Datum =~ m/(\d+)\.(\d+)\.(\d+)/g;
$dt = $3 . $2 . $1 . $Zeit . "_" . $addon;
$Datum = $Zeit = "";
}

#put the error snippel in hash
if ( /^\s*$/ or eof ) {

$hash{$dt} = $lines if $errorFound;
$errorFound = 0;
$lines = '';
}
}

close(FILE);
}
}

work_with_file($file1, ARGV[0]);
work_with_file($file2, ARGV[1]);
renee
 2006-06-02 21:46
#66963 #66963
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Generell übergibt man an eine Sub eine Referenz auf folgende Arten:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
my $array_ref = \@array;
subroutine($array_ref);

# oder

my $array_ref = [1,2,3];
subroutine($array_ref);

# oder

subroutine(\@array);


für den Hash geht das ganze Analog...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
mr-sansibar
 2006-06-02 15:23
#66964 #66964
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
hallo!
ich gebe in die komandozeile 2 parameter zum lesen von 2 files an.
wenn es fertig ist mit dem einem file zu lesen dann solle er mit dem zweiten file weiter machen. dabei soll er für jedes file etwas anderes machen.
ich gebe ein teil vom script als bespiel:

ist es auch möglich ais 2 while-schleifen ein einziges zu machen, hab eleder bisher keine lösung gefunden. bin leider noch anfänger.

danke für eure hilfe
Code: (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
while ( <dat1> ) {

             
$Datum = $_ if m/Date: /;
$Zeit = $_ if m/Time: /;
$errorFound = 1 if /Severity: Error/;

$lines .= $_;

             #generate a new hash-hey  
if ($Zeit && $Datum && $errorFound){    
           $Zeit  =~ s/\D//g;
       $Datum =~ m/(\d+)\.(\d+)\.(\d+)/g;
$dt    =  $3.$2.$1.$Zeit."_".$ARGV[0];
$Datum =  $Zeit = "";
        }

   #put the error snippel in hash
   if (/^\s*$/ or eof) {
   
        $hash{$dt}  = $lines if $errorFound;
$errorFound = 0;
$lines      = ''
       }
}
 
  close dat1;

while ( <dat2> ) {

     
$Datum = $_ if m/Date: /;
$Zeit = $_ if m/Time: /;
$errorFound = 1 if /Severity: Error/;

$lines .= $_;


             #generate a new hash-hey  
if ($Zeit && $Datum && $errorFound){    
           $Zeit  =~ s/\D//g;
       $Datum =~ m/(\d+)\.(\d+)\.(\d+)/g;
$dt    =  $3.$2.$1.$Zeit."_".$ARGV[1];
$Datum =  $Zeit = "";
       }


   #put the error snippel in hash
   if (/^\s*$/ or eof) {
   
      $hash{$dt}  = $lines if $errorFound;
$errorFound = 0;
$lines      = ''
       }
close dat2;
   
mr-sansibar
 2006-06-02 15:54
#66965 #66965
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
habe ich auch gedacht.
aber der kleine unterschied von den while-schleifen ist, das bei der ersten while-schleife dem string $dt @ARGV[0] angehängt wird und bei der zweiten while schleife wird dem string $dt @ARGV[1] angehängt. im prinzip passiert bei beiden while schleifen das gleiche.

gibt es eventuell eine lösung um daraus eine while schleife zu machen
mr-sansibar
 2006-06-02 17:53
#66966 #66966
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
Vielen Dank!
kannst du mir noch sagen wie ich eine referenz einer funktion übergeben kann.
sonst wird es bei jeden funktionsaufruf variablen überrschrieben.
pq
 2006-06-02 21:48
#66967 #66967
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
hat nix mit CGI zu tun - *verschieb*
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 7 Einträge, 1 Seite



View all threads created 2006-06-02 15:29.