Thread next LABEL in Subroutinen: gibt es feinere Lösungswege? (9 answers)
Opened by bloonix at 2006-12-13 15:17

bloonix
 2006-12-13 15:17
#72503 #72503
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Leute,

für folgendes Codebeispiel suche ich eine andere Lösung.

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
MYLOOP: while ( 1 ) {

  open my $fh1, '<', "$file1" or do {
     print STDERR "unable to open $file1: $!\n";
     print STDERR "sleep for 3 seconds\n";
     sleep 3;
     print STDERR "wakeup\n";
     next MYLOOP;
  };

  # irgendeine Verarbeitung
  close $fh1;

  open my $fh2, '<', "$file2" or do {
     print STDERR "unable to open $file2: $!\n";
     print STDERR "sleep for 3 seconds\n";
     sleep 3;
     print STDERR "wakeup\n";
     next MYLOOP;
  };

  # irgendeine Verarbeitung
  close $fh2;

  open my $fh3, '<', "$file3" or do {
     print STDERR "unable to open $file3: $!\n";
     print STDERR "sleep for 3 seconds\n";
     sleep 3;
     print STDERR "wakeup\n";
     next MYLOOP;
  };

  # irgendeine Verarbeitung
  close $fh3;

}


Was mir hier nicht passt ist die do { ... } Anweisung, sobald etwas in
dem Loop fehl schlägt. Ich würde das gerne mit einer Subroutine erledigen,
aber das scheint wohl deprecated zu sein.

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
MYLOOP: while ( 1 ) {

  open my $fh1, '<', "$file1" or foobar($file1);
  # irgendeine Verarbeitung
  close $fh1;

  open my $fh2, '<', "$file2" or foobar($file2);
  # irgendeine Verarbeitung
  close $fh2;

  open my $fh3, '<', "$file3" or foobar($file3);
  # irgendeine Verarbeitung
  close $fh3;

}

sub foobar {
  my $file = shift;
  print STDERR "unable to open $file: $!\n";
  print STDERR "sleep for 3 seconds\n";
  sleep 3;
  print STDERR "wakeup\n";

  {
     no warnings "exiting";
     next MYLOOP;
  }
}


Gibt es vielleicht auch noch andere Lösungswege für mich?

Für ein paar Tipps wäre ich dankbar.

Viele Grüße,
opi
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.

View full thread next LABEL in Subroutinen: gibt es feinere Lösungswege?