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

while-schleifen-problem

Leser: 1


<< >> 3 Einträge, 1 Seite
Annka
 2006-07-20 10:56
#68276 #68276
User since
2006-07-18
43 Artikel
BenutzerIn
[default_avatar]
hallo, ich habe heute folgendes probelm. mein programm ist weitgehends fertig außer meine while-schleife funktioniert nicht wie ich es gerne hätte.

sieht folgendermaßen aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
while (<$fh>) 
{
my @split = split(/,/, $_);
if($split[$b] < $Ergebnis) #überprüft nach
minimum
{
$Ergebnis=$split[$b];
}
else{next};
}


die schleife durchläuft meine datei, die in $fh, steht nur ein einziges mal. aber das soll sie nicht machen sie muss es insgesamt 19 mal machen. bis jetzt macht sie es nur einmal.
ich habe außen herum eine schleife die 19 mal läuft und die funktioniert. innerhalb dieser schleife liegt die while (<fh>) und sie geht beim 2mal nicht mehr. es liegt wohl daran dass durch die splitfunktion das fh weg is ... weiß aber nicht wie ich es beheben soll.\n\n

<!--EDIT|renee|1153380349-->
renee
 2006-07-20 11:23
#68277 #68277
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn Du einmal durch die Datei gegangen bist, bist Du am Ende der Datei angelangt. Entweder musst Du wieder an den Dateianfang springen oder Du liest erstmal alles in ein Array ein oder Du verwendest CPAN:Tie::File

Zurueckspringen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;

my $file = 'whiletest.txt';
open(my $fh,"<",$file) or die $!;

for(0..3){
while(my $line = <$fh>){
print $line;
}
seek $fh,0,0;
}

close $fh;


Das entscheidende ist das seek.


Erst in ein Array lesen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl

use strict;
use warnings;

my $file = 'whiletest.txt';
open(my $fh,"<",$file) or die $!;
my @lines = <$fh>;
close $fh;

for(0..3){
for my $line(@lines){
print $line;
}
}


Mit CPAN:Tie::File:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use strict;
use warnings;
use Tie::File;

my $file = 'whiletest.txt';
tie my @lines,"Tie::File",$file or die $!;
for(0..3){
for my $line(@lines){
print $line,"\n";
}
}
untie @lines;
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/
Crian
 2006-07-21 13:10
#68278 #68278
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Das $b beunruhigt mich. Wo kommt das denn her?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 3 Einträge, 1 Seite



View all threads created 2006-07-20 10:56.