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

Auswertung einer if Bedingung



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
oes
 2008-03-05 00:00
#106665 #106665
User since
2008-02-26
11 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich habe ein kleines Problem mit einer if Struktur:
Code (perl): (dl )
1
2
3
4
if ((-e "1\.txt")||(-e "2\.txt")){
        $file_name=$_;
        $fh->new IO::File "<$file_name" or die $!;
}


Wie erfahre ich, WELCHE Bedingung erfüllt worden ist? Wie Ihr sieht, soll demnach die zutreffende Datei geöffnet werden. Mit $_ komme ich offensichtlich nicht weiter.
renee
 2008-03-05 00:20
#106666 #106666
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann musst Du getrennte Bedingungen machen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
my $file_name;
if ( -e "1.txt"){
        $file_name=$_;
}
elsif( -e "2.txt" ){
    $file_name = $_;
}

if( $file_name ){
    $fh =  IO::File "<$file_name" or die $!
}


Aber eigentlich ist es ja egal, weil $file_name in beiden Fällen auf $_ gesetzt wird. Da wird also nicht berücksichtigt, welche Bedingung erfüllt ist...
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/
lichtkind
 2008-03-05 01:17
#106669 #106669
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
das liesse sich auch junctiv lösen, gibts ja auch perl6::* module für aber für anfang ist das sicher bessere lösung.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
oes
 2008-03-05 07:20
#106671 #106671
User since
2008-02-26
11 Artikel
BenutzerIn
[default_avatar]
Schade, so wie ich Perl kennen gelernt habe, hätt ich darauf wetten können, dass es auch hier irgendwelche Spezialvariablen gibt ;) Nun, denn... Danke für Eure Antworten.
murphy
 2008-03-05 12:25
#106696 #106696
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Wie wäre es denn mit der kanonischen Lösung:
Code (perl): (dl )
1
2
3
4
my $file_name;
if (-e ($file_name = "1\.txt") or -e ($file_name = "2\.txt")){
    $fh->new IO::File "<$file_name" or die $!;
}
When C++ is your hammer, every problem looks like your thumb.
renee
 2008-03-05 12:58
#106700 #106700
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das ist nicht äquivalent zu dem oben geposteten, weil Du nicht den Wert von $_ verwendest. Aber vieleicht ist es trotzdem das was der OP will, da sein Text vom Quellcode abweicht ;-)
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/
murphy
 2008-03-05 13:19
#106704 #106704
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
@renee: Im Gegensatz zu dem von Dir geposteten Code funktioniert es aber ;-) Der -e Operator setzt nämlich nicht $_, er verwendet es nur, wenn ihm das Argument fehlt.
When C++ is your hammer, every problem looks like your thumb.
renee
 2008-03-05 13:44
#106707 #106707
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
murphy+2008-03-05 12:19:27--
@renee: Im Gegensatz zu dem von Dir geposteten Code funktioniert es aber ;-) Der -e Operator setzt nämlich nicht $_, er verwendet es nur, wenn ihm das Argument fehlt.


Das weiß ich. Ich bin davon ausgegangen, dass der Code innerhalb einer Schleife steht und deswegen $_ einen Wert hat...
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/
murphy
 2008-03-05 13:48
#106708 #106708
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Eine Frage am Rande: $fh->new IO::File ... ist zwar ein gültiger Befehl, sieht aber irgendwie verdächtig aus -- sollte das vielleicht eher $fh = new IO::File ... heißen?
When C++ is your hammer, every problem looks like your thumb.
oes
 2008-03-05 13:49
#106709 #106709
User since
2008-02-26
11 Artikel
BenutzerIn
[default_avatar]
Hallo murphy,

das sieht seeehr gut aus, werds heute abend probieren, aber wird schon klappen. Danke auch an die anderen!

PS:
klar... $fh= new IO::File
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2008-03-05 00:00.