Schrift
[thread]11835[/thread]

Frage zur Oder-Anweisung ( || )



<< >> 9 Einträge, 1 Seite
tsy
 2008-05-19 16:28
#109917 #109917
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Hallo, Forum!
Ich möchte aus einem Array selektiv Daten ausgeben. und zwar sollen in unten stehendem Code die 14 und die 15 weggelassen werden. Ausgegeben wird nichts.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
@re;
for ($i =0; $i<20; $i++){
        $re[$i]  = $i;
}
print "@re\n";
foreach (@re){
        next if ($_ == 14 || 15 );
        print;
}

Wo liegt mein Denkfehler?

Viele Grüße, tsy
Struppi
 2008-05-19 16:30
#109918 #109918
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Naja, du prüfst ob $_ gleich 14 ist oder ob 15 wahr ist, was es immer ist, d.h. deine Bedingung ist immer wahr.
tsy
 2008-05-19 16:38
#109920 #109920
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Ach so.
Code (perl): (dl )
next if($_ == 14 or $_ == 15 );

tut es dann also. :-)
Danke schön!

tsy
renee
 2008-05-19 16:41
#109921 #109921
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du müsstest next if ($_ == 14 || $_ == 15 ); machen...
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/
sid burn
 2008-05-19 16:44
#109922 #109922
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
tsy+2008-05-19 14:28:49--
Hallo, Forum!
Ich möchte aus einem Array selektiv Daten ausgeben. und zwar sollen in unten stehendem Code die 14 und die 15 weggelassen werden. Ausgegeben wird nichts.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
@re;
for ($i =0; $i<20; $i++){
        $re[$i]  = $i;
}
print "@re\n";
foreach (@re){
        next if ($_ == 14 || 15 );
        print;
}

Wo liegt mein Denkfehler?

Viele Grüße, tsy


Code: (dl )
1
2
3
4
@re
for ($i =0; $i<20; $i++){
$re[$i] = $i;
}

hmm, das ist
1) häßlich
2) fehleranfällig
3) du nutzt anscheind kein "use strict";

Diesen Code neu geschrieben und perlisher
Code: (dl )
my @re = 0 .. 19;


Code: (dl )
next if ($_ == 14 || 15 );

Ich füge mal klammern hinzuz um dir zu verdeutlichen was du tust.
Code: (dl )
next if ( $_ == 14 ) || 15;



Dein Skript komplett neu geschrieben.
Code: (dl )
1
2
3
4
for my $i ( 0 .. 19 ) {
next if $i == 14 || $i == 15;
print "$i\n";
}


oder...
Code: (dl )
1
2
3
for my $i ( 0 .. 13, 16 .. 19 ) {
print "$i\n";
}
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Taulmarill
 2008-05-19 16:52
#109923 #109923
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Anstatt || benutze ich in solchen Fällen meist or. Finde ich irgendwie lesbarer. Außerdem muss man da nicht weiter über Prioritäten bei den Operatoren nachdenken, da or ganz unten steht.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
bloonix
 2008-05-19 18:15
#109935 #109935
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
sid burn+2008-05-19 14:44:01--
hmm, das ist
1) häßlich
2) fehleranfällig
3) du nutzt anscheind kein "use strict";

...

Dein Skript komplett neu geschrieben.
Code: (dl )
1
2
3
4
for my $i ( 0 .. 19 ) {
next if $i == 14 || $i == 15;
print "$i\n";
}

Das lag mir auch auf dem Herzen. sid++
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
tsy
 2008-05-19 18:43
#109939 #109939
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Danke für Eure Ergänzungen; besonders jene mit den slices :-)
Meine Zeilen stammen auch nicht aus einem genutzten Skript. Wenn etwas nicht funktioniert, dann versuche ich, dem Problem in einem simplen, kleinen Script auf den Grund zu gehen. Im richtigen Skript verwende ich natürlich strict und die finale Version der for-Schleife gefällt mir auch so gut, dass ich sie gerne ins Hauptprogramm übernehme ;-)

Grüße,

tsy
bloonix
 2008-05-19 18:48
#109940 #109940
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
tsy+2008-05-19 16:43:29--
Wenn etwas nicht funktioniert, dann versuche ich, dem Problem in einem simplen, kleinen Script auf den Grund zu gehen.


Du möchtest also ohne "use strict; use warnings;" Problemen auf den Grund gehen?

Bitte überdenke nochmal diesen Satz *fg*
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< >> 9 Einträge, 1 Seite



View all threads created 2008-05-19 16:28.