in reply to Re: Testing methodology
in thread Testing methodology

Why would you not use Thread::Conveyor?

Because I know better. Why are you suggesting it when you obviously do not?

I was asked to update this to explain my reasoning, so here it is:

Thread::Conveyor doesn't work. It isn't thread-safe.

Don't believe me, try it for yourself! I'll even provide the test script for you:

#! perl -slw use strict; use threads ( stack_size => 4096 ); use Thread::Conveyor; my $belt = Thread::Conveyor->new( { maxboxes => 50, minboxes => 25, optimize => 'memory', # or 'cpu' }); async{ print while defined( $_ = $belt->take ); }->detach; $belt->put( $_ ) for 1 .. 10; $belt->put( undef );

Nine times out of ten this will segfault with;

Problem signature: Problem Event Name: APPCRASH Application Name: perl.exe Application Version: 5.10.1.1007 Application Timestamp: 4b60ba96 Fault Module Name: perl510.dll Fault Module Version: 5.10.1.1007 Fault Module Timestamp: 4b60ba95 Exception Code: c0000005 Exception Offset: 000000000006c6f8 OS Version: 6.0.6001.2.1.0.768.3 Locale ID: 2057 Additional Information 1: 90e0 Additional Information 2: e939a93db866b76af40148e39e07fd0d Additional Information 3: 85c4 Additional Information 4: 6c632c487ffa8e4b9b7137dbbbe72313

On the 10th occasion it will emit the following before hanging:

C:\test>t-TCcrap 1 2 3 4 5 6 7 8 Thread 1 terminated abnormally: Can't use an undefined value as an ARR +AY reference at C:/Perl64/site/lib/Thread/Tie/Array.pm (loaded on dem +and from offset 1939 for 176 bytes) line 75. Terminating on signal SIGINT(2)

And if you trace the run you get:

Argument "n/a" isn't numeric in printf at C:/Perl64/site/lib/Devel/Tra +ce.pm line 20. >> [0] t-TCcrap.pl : 6: my $belt = Thread::Convey +or->new( { >> [0] C:/Perl64/site/lib/load.pm : 221: $load::AUTOLOAD =~ m# +^(.*)::(.*?)$#; >> [0] C:/Perl64/site/lib/load.pm : 222: goto &{$load::AUTOLOA +D} if _can( $1,$2 ); >> [0] C:/Perl64/site/lib/load.pm : 443: my ($module,$sub) = @ +_; >> [0] C:/Perl64/site/lib/load.pm : 444: return if $module eq +'main'; >> [0] C:/Perl64/site/lib/load.pm : 450: _scan( $module ) unle +ss exists $load::AUTOLOAD{$module}; >> [0] C:/Perl64/site/lib/load.pm : 451: my ($subline,$start,$ +length) = >> [0] C:/Perl64/site/lib/load.pm : 453: return unless $start; >> [0] C:/Perl64/site/lib/load.pm : 461: local( $!,$@ ); >> [0] C:/Perl64/site/lib/load.pm : 462: my $file = _filename( + $module ) >> [0] C:/Perl64/site/lib/load.pm : 405: (my $key = $_[0]) =~ +s#::#/#g; >> [0] C:/Perl64/site/lib/load.pm : 406: my $filename = $INC{" +$key.pm"}; >> [0] C:/Perl64/site/lib/load.pm : 407: return $filename unle +ss ref $filename; >> [0] C:/Perl64/site/lib/load.pm : 464: open( VERSION,"<$file +" ) # use VERSION glob to conserve memory >> [0] C:/Perl64/site/lib/load.pm : 466: binmode VERSION # nee +ded for Windows systems, apparently >> [0] C:/Perl64/site/lib/load.pm : 468: seek( VERSION,$start, +0 ) >> [0] C:/Perl64/site/lib/load.pm : 474: _trace( "ondemand ${m +odule}::$sub, line $subline (offset $start, $length bytes)" ) if TRAC +E; >> [0] C:/Perl64/site/lib/load.pm : 475: my $use = $use{$modul +e} || ''; >> [0] C:/Perl64/site/lib/load.pm : 476: my $source = <<EOD; >> [0] C:/Perl64/site/lib/load.pm : 486: my $read = read( VERS +ION,$source,$length,length($source) ); >> [0] C:/Perl64/site/lib/load.pm : 487: die "Error reading so +urce: only read $read bytes instead of $length" >> [0] C:/Perl64/site/lib/load.pm : 489: close VERSION; >> [0] C:/Perl64/site/lib/load.pm : 498: &ifdef::reset if IFDE +F; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 499: my $original = $source; >> [0] C:/Perl64/site/lib/load.pm : 500: $source =~ m#^(.*)$#s +; $source = IFDEF ? ifdef::process( $1 ) : $1; >> [0] C:/Perl64/site/lib/load.pm : 500: $source =~ m#^(.*)$#s +; $source = IFDEF ? ifdef::process( $1 ) : $1; >> [0] C:/Perl64/site/lib/load.pm : 501: eval $source; >> [0] (eval 29)[C:/Perl64/site/lib/load.pm:501]: 2: no warnings; >> [0] (eval 29)[C:/Perl64/site/lib/load.pm:501]: 2: no warnings; >> [0] (eval 29)[C:/Perl64/site/lib/load.pm:501]: 2: no warnings; >> [0] C:/Perl64/lib/warnings.pm : 377: shift; >> [0] C:/Perl64/lib/warnings.pm : 379: my $catmask ; >> [0] C:/Perl64/lib/warnings.pm : 380: my $mask = ${^WARNING +_BITS} ; >> [0] C:/Perl64/lib/warnings.pm : 382: if (vec($mask, $Offse +ts{'all'}, 1)) { >> [0] C:/Perl64/lib/warnings.pm : 383: $mask |= $Bits{'a +ll'} ; >> [0] C:/Perl64/lib/warnings.pm : 384: $mask |= $DeadBit +s{'all'} if vec($mask, $Offsets{'all'}+1, 1); >> [0] C:/Perl64/lib/warnings.pm : 387: push @_, 'all' unless + @_; >> [0] C:/Perl64/lib/warnings.pm : 389: foreach my $word ( @_ + ) { >> [0] C:/Perl64/lib/warnings.pm : 390: if ($word eq 'FATAL') + { >> [0] C:/Perl64/lib/warnings.pm : 394: $mask &= ~($catma +sk | $DeadBits{$word} | $All); >> [0] C:/Perl64/lib/warnings.pm : 400: ${^WARNING_BITS} = $m +ask ; >> [0] C:/Perl64/site/lib/load.pm : 502: die "load: $@\n$origi +nal====================\n$source" if $@; >> [0] C:/Perl64/site/lib/load.pm : 503: delete $load::AUTOLOA +D{$module,$sub}; >> [0] C:/Perl64/site/lib/load.pm : 504: return \&{$module.':: +'.$sub}; >> [0] C:/Perl64/site/lib/load.pm : 504: return \&{$module.':: +'.$sub}; >> [0] C:/Perl64/site/lib/load.pm : 222: goto &{$load::AUTOLOA +D} if _can( $1,$2 ); >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 45: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 46: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 51: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 52: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 58: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 59: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 67: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 68: ??? >> [0] C:/Perl64/lib/attributes.pm : 32: @_ > 2 && ref $_[2] o +r do { >> [0] C:/Perl64/lib/attributes.pm : 36: my (undef,$home_stash +,$svref,@attrs) = @_; >> [0] C:/Perl64/lib/attributes.pm : 38: my $svtype = uc refty +pe($svref); >> [0] C:/Perl64/lib/attributes.pm : 39: my $pkgmeth; >> [0] C:/Perl64/lib/attributes.pm : 40: $pkgmeth = UNIVERSAL: +:can($home_stash, "MODIFY_${svtype}_ATTRIBUTES") >> [0] C:/Perl64/site/lib/load.pm : 66: &{$can}( @_ ) || +(ref( $_[0] ) ? undef : _can( @_ )) >> [0] C:/Perl64/site/lib/load.pm : 66: &{$can}( @_ ) || +(ref( $_[0] ) ? undef : _can( @_ )) >> [0] C:/Perl64/site/lib/load.pm : 443: my ($module,$sub) = @ +_; >> [0] C:/Perl64/site/lib/load.pm : 444: return if $module eq +'main'; >> [0] C:/Perl64/site/lib/load.pm : 450: _scan( $module ) unle +ss exists $load::AUTOLOAD{$module}; >> [0] C:/Perl64/site/lib/load.pm : 451: my ($subline,$start,$ +length) = >> [0] C:/Perl64/site/lib/load.pm : 453: return unless $start; >> [0] C:/Perl64/lib/attributes.pm : 42: my @badattrs; >> [0] C:/Perl64/lib/attributes.pm : 43: if ($pkgmeth) { >> [0] C:/Perl64/lib/attributes.pm : 62: @badattrs = _modify_a +ttrs($svref, @attrs); >> [0] C:/Perl64/lib/attributes.pm : 64: if (@badattrs) { >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 69: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 858 for 1208 bytes): 70: ??? >> [0] C:/Perl64/site/lib/load.pm : 221: $load::AUTOLOAD =~ m# +^(.*)::(.*?)$#; >> [0] C:/Perl64/site/lib/load.pm : 222: goto &{$load::AUTOLOA +D} if _can( $1,$2 ); >> [0] C:/Perl64/site/lib/load.pm : 443: my ($module,$sub) = @ +_; >> [0] C:/Perl64/site/lib/load.pm : 444: return if $module eq +'main'; >> [0] C:/Perl64/site/lib/load.pm : 450: _scan( $module ) unle +ss exists $load::AUTOLOAD{$module}; >> [0] C:/Perl64/site/lib/load.pm : 451: my ($subline,$start,$ +length) = >> [0] C:/Perl64/site/lib/load.pm : 453: return unless $start; >> [0] C:/Perl64/site/lib/load.pm : 461: local( $!,$@ ); >> [0] C:/Perl64/site/lib/load.pm : 462: my $file = _filename( + $module ) >> [0] C:/Perl64/site/lib/load.pm : 405: (my $key = $_[0]) =~ +s#::#/#g; >> [0] C:/Perl64/site/lib/load.pm : 406: my $filename = $INC{" +$key.pm"}; >> [0] C:/Perl64/site/lib/load.pm : 407: return $filename unle +ss ref $filename; >> [0] C:/Perl64/site/lib/load.pm : 464: open( VERSION,"<$file +" ) # use VERSION glob to conserve memory >> [0] C:/Perl64/site/lib/load.pm : 466: binmode VERSION # nee +ded for Windows systems, apparently >> [0] C:/Perl64/site/lib/load.pm : 468: seek( VERSION,$start, +0 ) >> [0] C:/Perl64/site/lib/load.pm : 474: _trace( "ondemand ${m +odule}::$sub, line $subline (offset $start, $length bytes)" ) if TRAC +E; >> [0] C:/Perl64/site/lib/load.pm : 475: my $use = $use{$modul +e} || ''; >> [0] C:/Perl64/site/lib/load.pm : 476: my $source = <<EOD; >> [0] C:/Perl64/site/lib/load.pm : 486: my $read = read( VERS +ION,$source,$length,length($source) ); >> [0] C:/Perl64/site/lib/load.pm : 487: die "Error reading so +urce: only read $read bytes instead of $length" >> [0] C:/Perl64/site/lib/load.pm : 489: close VERSION; >> [0] C:/Perl64/site/lib/load.pm : 498: &ifdef::reset if IFDE +F; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 499: my $original = $source; >> [0] C:/Perl64/site/lib/load.pm : 500: $source =~ m#^(.*)$#s +; $source = IFDEF ? ifdef::process( $1 ) : $1; >> [0] C:/Perl64/site/lib/load.pm : 500: $source =~ m#^(.*)$#s +; $source = IFDEF ? ifdef::process( $1 ) : $1; >> [0] C:/Perl64/site/lib/load.pm : 501: eval $source; >> [0] (eval 30)[C:/Perl64/site/lib/load.pm:501]: 2: no warnings; >> [0] (eval 30)[C:/Perl64/site/lib/load.pm:501]: 2: no warnings; >> [0] (eval 30)[C:/Perl64/site/lib/load.pm:501]: 2: no warnings; >> [0] C:/Perl64/lib/warnings.pm : 377: shift; >> [0] C:/Perl64/lib/warnings.pm : 379: my $catmask ; >> [0] C:/Perl64/lib/warnings.pm : 380: my $mask = ${^WARNING +_BITS} ; >> [0] C:/Perl64/lib/warnings.pm : 382: if (vec($mask, $Offse +ts{'all'}, 1)) { >> [0] C:/Perl64/lib/warnings.pm : 383: $mask |= $Bits{'a +ll'} ; >> [0] C:/Perl64/lib/warnings.pm : 384: $mask |= $DeadBit +s{'all'} if vec($mask, $Offsets{'all'}+1, 1); >> [0] C:/Perl64/lib/warnings.pm : 387: push @_, 'all' unless + @_; >> [0] C:/Perl64/lib/warnings.pm : 389: foreach my $word ( @_ + ) { >> [0] C:/Perl64/lib/warnings.pm : 390: if ($word eq 'FATAL') + { >> [0] C:/Perl64/lib/warnings.pm : 394: $mask &= ~($catma +sk | $DeadBits{$word} | $All); >> [0] C:/Perl64/lib/warnings.pm : 400: ${^WARNING_BITS} = $m +ask ; >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 2534 for 462 bytes): 109: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 2534 for 462 bytes): 109: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 2534 for 462 bytes): 109: ??? >> [0] C:/Perl64/lib/strict.pm : 40: shift; >> [0] C:/Perl64/lib/strict.pm : 41: $^H &= ~ (@_ ? bits(@ +_) : $default_bits); >> [0] C:/Perl64/lib/strict.pm : 19: my $bits = 0; >> [0] C:/Perl64/lib/strict.pm : 20: my @wrong; >> [0] C:/Perl64/lib/strict.pm : 21: foreach my $s (@_) { >> [0] C:/Perl64/lib/strict.pm : 22: push @wrong, $s unles +s exists $bitmask{$s}; >> [0] C:/Perl64/lib/strict.pm : 23: $bits |= $bitmask +{$s} || 0; >> [0] C:/Perl64/lib/strict.pm : 25: if (@wrong) { >> [0] C:/Perl64/lib/strict.pm : 29: $bits; >> [0] C:/Perl64/site/lib/load.pm : 502: die "load: $@\n$origi +nal====================\n$source" if $@; >> [0] C:/Perl64/site/lib/load.pm : 503: delete $load::AUTOLOA +D{$module,$sub}; >> [0] C:/Perl64/site/lib/load.pm : 504: return \&{$module.':: +'.$sub}; >> [0] C:/Perl64/site/lib/load.pm : 504: return \&{$module.':: +'.$sub}; >> [0] C:/Perl64/site/lib/load.pm : 222: goto &{$load::AUTOLOA +D} if _can( $1,$2 ); >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 2534 for 462 bytes): 106: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 2534 for 462 bytes): 107: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 2534 for 462 bytes): 108: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 2534 for 462 bytes): 110: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor.pm (loaded on demand from of +fset 2534 for 462 bytes): 110: ??? >> [0] C:/Perl64/site/lib/Thread/Conveyor/Throttled.pm: 9: use stri +ct; >> [0] C:/Perl64/site/lib/Thread/Conveyor/Throttled.pm: 9: use stri +ct; >> [0] C:/Perl64/site/lib/Thread/Conveyor/Throttled.pm: 9: use stri +ct; >> [0] C:/Perl64/lib/strict.pm : 35: shift; >> [0] C:/Perl64/lib/strict.pm : 36: $^H |= @_ ? bits(@_) +: $default_bits; >> [0] C:/Perl64/site/lib/Thread/Conveyor/Throttled.pm: 13: use load +; >> [0] C:/Perl64/site/lib/Thread/Conveyor/Throttled.pm: 13: use load +; >> [0] C:/Perl64/site/lib/Thread/Conveyor/Throttled.pm: 13: use load +; >> [0] C:/Perl64/site/lib/load.pm : 103: my $class = shift; >> [0] C:/Perl64/site/lib/load.pm : 104: my ($module,undef,$li +neno) = caller(); >> [0] C:/Perl64/site/lib/load.pm : 111: if (@_) { >> [0] C:/Perl64/site/lib/load.pm : 206: _scan( $module ); >> [0] C:/Perl64/site/lib/load.pm : 248: my $module = shift; >> [0] C:/Perl64/site/lib/load.pm : 249: my $loadnow = defined +( $_[0] ) ? shift : $now; >> [0] C:/Perl64/site/lib/load.pm : 250: local $_ = \my $foo; >> [0] C:/Perl64/site/lib/load.pm : 251: local( $!,$@ ); >> [0] C:/Perl64/site/lib/load.pm : 257: my $file = _filename( + $module ) >> [0] C:/Perl64/site/lib/load.pm : 405: (my $key = $_[0]) =~ +s#::#/#g; >> [0] C:/Perl64/site/lib/load.pm : 406: my $filename = $INC{" +$key.pm"}; >> [0] C:/Perl64/site/lib/load.pm : 407: return $filename unle +ss ref $filename; >> [0] C:/Perl64/site/lib/load.pm : 259: open( VERSION,"<$file +" ) # use VERSION as glob to save memory >> [0] C:/Perl64/site/lib/load.pm : 261: binmode VERSION # nee +ded for Windows systems, apparently >> [0] C:/Perl64/site/lib/load.pm : 269: my $line = 0; >> [0] C:/Perl64/site/lib/load.pm : 270: my $pod = 0; >> [0] C:/Perl64/site/lib/load.pm : 271: my $package = ''; >> [0] C:/Perl64/site/lib/load.pm : 272: &ifdef::reset if IFDE +F; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 284: while (<VERSION>) { >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 291: die "Found packag +e '$1' after '$package'" if $package; >> [0] C:/Perl64/site/lib/load.pm : 292: $package = $1; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 290: next unless m#^pa +ckage\s+([\w:]+)\s*;#; >> [0] C:/Perl64/site/lib/load.pm : 285: &ifdef::oneline i +f IFDEF; # should get optimized away if not needed >> [0] C:/Perl64/site/lib/load.pm : 286: $line++; >> [0] C:/Perl64/site/lib/load.pm : 287: $pod = !m#^=cut#, + next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 288: next if $pod or m +#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 289: last if m#^__END_ +_#; >> [0] C:/Perl64/site/lib/load.pm : 298: die "Could not find p +ackage name" unless $package; >> [0] C:/Perl64/site/lib/load.pm : 299: die "Found package $p +ackage inside '$file'" if $package ne $module; >> [0] C:/Perl64/site/lib/load.pm : 304: my $endline = $line+1 +; >> [0] C:/Perl64/site/lib/load.pm : 305: my $endstart = tell V +ERSION; >> [0] C:/Perl64/site/lib/load.pm : 310: if ($loadnow) { >> [0] C:/Perl64/site/lib/load.pm : 335: my $start; >> [0] C:/Perl64/site/lib/load.pm : 336: my $sub = ''; >> [0] C:/Perl64/site/lib/load.pm : 337: my $subline; >> [0] C:/Perl64/site/lib/load.pm : 338: my $length; >> [0] C:/Perl64/site/lib/load.pm : 348: while (<VERSION>) + { >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 371: my $seek = te +ll( VERSION ) - (IFDEF ? $length : length); >> [0] C:/Perl64/site/lib/load.pm : 372: _store( $modu +le,$sub,$subline,$start,$seek-$start ) if $sub; >> [0] C:/Perl64/site/lib/load.pm : 373: $sub = $1; >> [0] C:/Perl64/site/lib/load.pm : 374: die "Cannot h +andle fully qualified subroutine '$sub'\n" >> [0] C:/Perl64/site/lib/load.pm : 376: $subline = $l +ine; >> [0] C:/Perl64/site/lib/load.pm : 377: $start = $see +k; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 371: my $seek = te +ll( VERSION ) - (IFDEF ? $length : length); >> [0] C:/Perl64/site/lib/load.pm : 372: _store( $modu +le,$sub,$subline,$start,$seek-$start ) if $sub; >> [0] C:/Perl64/site/lib/load.pm : 426: _trace( "store $_[0]: +:$_[1], line $_[2] (offset $_[3], $_[4] bytes)" ) >> [0] C:/Perl64/site/lib/load.pm : 428: eval "package $_[0]; +sub $_[1]"; >> [0] C:/Perl64/site/lib/load.pm : 429: die "Could not create + stub: $@\n" if $@; >> [0] C:/Perl64/site/lib/load.pm : 430: $load::AUTOLOAD{$_[0] +,$_[1]} = pack( 'L3',$_[2],$_[3],$_[4] ) >> [0] C:/Perl64/site/lib/load.pm : 373: $sub = $1; >> [0] C:/Perl64/site/lib/load.pm : 374: die "Cannot h +andle fully qualified subroutine '$sub'\n" >> [0] C:/Perl64/site/lib/load.pm : 376: $subline = $l +ine; >> [0] C:/Perl64/site/lib/load.pm : 377: $start = $see +k; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 371: my $seek = te +ll( VERSION ) - (IFDEF ? $length : length); >> [0] C:/Perl64/site/lib/load.pm : 372: _store( $modu +le,$sub,$subline,$start,$seek-$start ) if $sub; >> [0] C:/Perl64/site/lib/load.pm : 426: _trace( "store $_[0]: +:$_[1], line $_[2] (offset $_[3], $_[4] bytes)" ) >> [0] C:/Perl64/site/lib/load.pm : 428: eval "package $_[0]; +sub $_[1]"; >> [0] C:/Perl64/site/lib/load.pm : 429: die "Could not create + stub: $@\n" if $@; >> [0] C:/Perl64/site/lib/load.pm : 430: $load::AUTOLOAD{$_[0] +,$_[1]} = pack( 'L3',$_[2],$_[3],$_[4] ) >> [0] C:/Perl64/site/lib/load.pm : 373: $sub = $1; >> [0] C:/Perl64/site/lib/load.pm : 374: die "Cannot h +andle fully qualified subroutine '$sub'\n" >> [0] C:/Perl64/site/lib/load.pm : 376: $subline = $l +ine; >> [0] C:/Perl64/site/lib/load.pm : 377: $start = $see +k; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; >> [0] C:/Perl64/site/lib/load.pm : 354: last if m#^__ +END__#; >> [0] C:/Perl64/site/lib/load.pm : 359: die "Only one + package per file: found '$1' after '$package'" >> [0] C:/Perl64/site/lib/load.pm : 361: next unless m +#^sub\s+([\w:]+)#; >> [0] C:/Perl64/site/lib/load.pm : 349: $length = len +gth if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 350: &ifdef::oneli +ne if IFDEF; >> [0] C:/Perl64/site/lib/load.pm : 351: $line++; >> [0] C:/Perl64/site/lib/load.pm : 352: $pod = !m#^=c +ut#, next if m#^=\w#; >> [0] C:/Perl64/site/lib/load.pm : 353: next if $pod +or m#^\s*\##; ...

Replies are listed 'Best First'.
Re^3: Testing methodology
by duelafn (Parson) on Mar 05, 2012 at 17:33 UTC

    Thank you very much for updating and giving your reason. I do in fact use Thread::Conveyor and had never run in to the segfault issue.

    Upon investigation, I only get the segfault when I set the stack size globally (when I load the threads module or via threads->set_stack_size(). I have no problems if I set the stack size at thread creation time (below). This explains why I have never run into trouble. Clearly, there is some problem with Thread::Conveyor and you have convinced me that there might be some reason to avoid it. Determining whether the problem is fixable is probably beyond me.

    #! perl -slw # This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi use strict; use threads; use Thread::Conveyor; my $belt = Thread::Conveyor->new( { maxboxes => 50, minboxes => 25, optimize => 'memory', # or 'cpu' }); threads->new(sub { print while defined( $_ = $belt->take ); }, { stack_size => 4096 })->detach; $belt->put( $_ ) for 1 .. 10; $belt->put( undef );

    Good Day,
        Dean

      FWIW: Here, the crash seems to be unrelated to the stack_size parameter, regardless of where it is applied. It seems to be entirely due to global clean up.

      That said, even if I defer global clean up, it still has severe problems.

      • It will frequently dq items twice or more.
      • Try to access non-existent stack items. And then hang.
      • If you try to use more than one consumer and one producer per queue, it just hangs.
      • If you make the queue too big, it hangs.
      • Under the rarefied conditions that it actually completes -- except for dodging the global clean-up issue -- it is very slow.

      Here's my test code and some typical results (Terminated on sigint means it hung):

      #! perl -slw use strict; use threads; use threads::shared; use Time::HiRes qw[ time sleep ]; use Thread::Conveyor; our $O //= 'memory'; our $N //= 1e4; our $T //= 4; ++$T; $T &= ~1; our $SIZE //= 50; my $Q1_n = Thread::Conveyor->new( { maxboxes => $SIZE, optimize => $O +}); my $Qn_n = Thread::Conveyor->new( { maxboxes => $SIZE, optimize => $O +}); my $Qn_1 = Thread::Conveyor->new( { maxboxes => $SIZE, optimize => $O +}); my $done1 :shared = 0; my $done2 :shared = 0; my @t1 = map async( sub{ $Qn_n->put( $_ ) while defined( $_ = $Q1_n->t +ake ); lock $done1; ++$done1; } ), 1 .. $T/2; my @t2 = map async( sub{ $Qn_1->put( $_ ) while defined( $_ = $Qn_n->t +ake ); lock $done2; ++$done2; } ), 1 .. $T/2; my $bits :shared = chr(0); $bits x= $N/ 8 + 1; my $t = async{ while( defined( $_ = $Qn_1->take ) ) { warn "value duplicated" if vec( $bits, $_, 1 ); vec( $bits, $_, 1 ) = 1; } }; my $start = time; $Q1_n->put( $_ ) for 1 .. $N; $Q1_n->put( (undef) x ($T/2) ); sleep 0.01 while $done1 < @t1; $Qn_n->put( (undef) x ($T/2) ); sleep 0.01 while $done2 < @t2; $Qn_1->put( undef ); sleep 0.01 until $t->is_joinable; my $stop = time; my $b = unpack '%32b*', $bits; die "NOK: $b : \n" unless $b == $N; printf "$N items by $T threads via three Qs size $SIZE in %.6f seconds +\n", $stop - $start; sleep 10; __END__ C:\test>perl async\Q.pm -N=1e4 -T=2 -SIZE=40 1e4 items by 2 threads via three Qs size 40 in 5.458000 seconds C:\test>t-TCcrap -N=100 -T=2 -SIZE=40 100 items by 2 threads via three Qs size 40 in 0.148909 seconds C:\test>t-TCcrap -N=1e4 -T=2 -SIZE=40 1e4 items by 2 threads via three Qs size 40 in 11.035008 seconds C:\test>t-TCcrap -N=1e5 -T=2 -SIZE=40 value duplicated at C:\test\t-TCcrap.pl line 26. value duplicated at C:\test\t-TCcrap.pl line 26. Thread 1 terminated abnormally: Can't use an undefined value as an ARR +AY reference at C:/Perl64/site/lib/Thread/Tie/Array.pm (loaded on dem +and from offset 1939 for 176 bytes) line 75. Terminating on signal SIGINT(2) C:\test>t-TCcrap -N=100 -T=2 -SIZE=4 100 items by 2 threads via three Qs size 4 in 0.148934 seconds Terminating on signal SIGINT(2) C:\test>t-TCcrap -N=100 -T=4 -SIZE=4 Terminating on signal SIGINT(2) C:\test>t-TCcrap -N=100 -T=4 -SIZE=4 Terminating on signal SIGINT(2) C:\test>t-TCcrap -N=100 -T=3 -SIZE=4 Terminating on signal SIGINT(2) C:\test>t-TCcrap -N=100 -T=3 -SIZE=40 Thread 1 terminated abnormally: Can't use an undefined value as an ARR +AY reference at C:/Perl64/site/lib/Thread/Tie/Array.pm (loaded on dem +and from offset 1939 for 176 bytes) line 75. Terminating on signal SIGINT(2) C:\test>t-TCcrap -N=100 -T=3 -SIZE=40 value duplicated at C:\test\t-TCcrap.pl line 26. value duplicated at C:\test\t-TCcrap.pl line 26. Terminating on signal SIGINT(2) C:\test>t-TCcrap -N=1e5 -T=2 -SIZE=40 value duplicated at C:\test\t-TCcrap.pl line 26. value duplicated at C:\test\t-TCcrap.pl line 26. Thread 1 terminated abnormally: Can't use an undefined value as an ARR +AY reference at C:/Perl64/site/lib/Thread/Tie/Array.pm (loaded on dem +and from offset 1939 for 176 bytes) line 75. Terminating on signal SIGINT(2)

      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      The start of some sanity?