Advertisement
Guest User

Perl OOP 4

a guest
Nov 4th, 2012
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.11 KB | None | 0 0
  1. #!/usr/bin/env perl
  2.  
  3. use v5.14;
  4. use strict;
  5. use warnings;
  6. use Data::Dumper;
  7.  
  8. my $wbuf1=3;
  9. my $wbuf2=3;
  10. my $first;
  11.  
  12. my $wtr1;
  13. my $wtr2;
  14. print "start\n";
  15.  
  16. $first = sub {
  17.     my $done_f = shift;
  18.     $wtr1 = sub {
  19.         print "start wtr1\n";
  20.     my $done_1 = shift;
  21.     my $mbuf=$wbuf1;
  22.     print "cb $wbuf1 $mbuf\n";
  23.     $wbuf1--;
  24.     if ( $wbuf1 ) {
  25.             print "cb wbuf1\n";
  26.             $wtr1->($done_1);
  27.     } else {
  28.             print "cb undef\n";
  29.             undef $wtr1;
  30.             $done_1->();
  31.             print "after exit\n";
  32.     }
  33.     print "return wtr1\n";
  34.     print "cb $wbuf1 $mbuf\n";
  35.     };
  36.     $wtr2 = sub {
  37.     print "start wtr2\n";
  38.     my $done_2 = shift;
  39.     my $mbuf=$wbuf2;
  40.     print "cb $wbuf2 $mbuf\n";
  41.     $wbuf2--;
  42.     if ( $wbuf2 ) {
  43.             print "cb wbuf2\n";
  44.             $wtr2->($done_2);
  45.     } else {
  46.             print "cb undef\n";
  47.             undef $wtr2;
  48.             $wtr1->($done_2);
  49.             print "after exit\n";
  50.     }
  51.     print "return wtr2\n";
  52.     print "cb $wbuf2 $mbuf\n";
  53.     };
  54.     $wtr2->( # Start !!!
  55.     sub {
  56.         my $done_cb = shift;
  57.         print "exit $wbuf1 $wbuf2\n";
  58.     }
  59.     );
  60. };
  61. $first->();
  62. print "stop\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement