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

next und mehrere Anweisungen?



<< >> 6 Einträge, 1 Seite
alpha80
 2007-11-08 18:30
#102058 #102058
User since
2007-11-07
3 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte falls eine Bedingung zutrifft, mehrere Anweisungen auführen und mit neuer Iteration beginnen.
Wie geht das? Gibt's alternative(n)?


Code: (dl )
1
2
3
4
5
6
7
foreach (...){
...
next if ($1 == 1) {
1.Anweisung ;
2.Anweisung;
}
}


Danke im Voraus!
nepos
 2007-11-08 18:53
#102060 #102060
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Meinst du sowas?
Code (perl): (dl )
1
2
3
4
5
6
7
8
foreach (...) {
  ...
  if ( $1 == 1 ) {
    1. Anweisung
    2. Anweisung
    next;
  }
}
betterworld
 2007-11-09 01:48
#102096 #102096
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Es sieht danach aus, dass Dir nicht bewusst ist, dass man if-Anweisungen in Perl auf zwei Arten notieren kann. Beides der folgenden bedeutet das gleiche:
Code (perl): (dl )
1
2
3
4
5
6
7
# Laengere Schreibweise:
if ($x == 1) {
    $x = 0;
}

# Kuerzere Schreibweise:
$x = 0 if $x == 1;


Vermutlich hast Du Aufrufe von "next" immer nur in der kuerzeren Schreibweise gesehen und denkst jetzt, dass das zur Syntax von next gehoert. Man kann es aber genauso in der laengeren Schreibweise schreiben, was den Vorteil hat, dass man in den geschweiften Klammern noch mehr Anweisungen dazuschreiben kann, wie nepos es demonstriert.
#Kein Kommentar
 2007-11-09 17:24
#102134 #102134
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
gibt es eigentlich eine möglichkeit sowas zu schreiben?

Code: (dl )
1
2
3
print "ciao!"	if $string eq "ciao";
print "hi!" elsif $string eq "hi";
print "hallo!" else;


bei mir zeigt er nämlich einen fehler an.
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
renee
 2007-11-09 17:28
#102136 #102136
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das kannst Du nicht mit nachgestellten Bedingungen machen. Das kannst Du nur mit den bekannten Blöcken machen...

Oder Du machst einen Dispatcher. Das ist zwar für dieses Spezielle Beispiel etwas Overkill, aber wenn es mal mehr als nur ein print-Statement wird:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my %funcs = (
    ciao => \&print_ciao,
    hi => \&print_hi,
);

my $string = 'ciao';

if( exists $funcs{$string} ){
    $funcs{$string}->();
}
else{
    print_default();
}

# hier die Subs...
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/
#Kein Kommentar
 2007-11-09 17:36
#102137 #102137
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
danke!
wollt ich nur mal wissen..
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
<< >> 6 Einträge, 1 Seite



View all threads created 2007-11-08 18:30.