Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: Testing methodology

by BrowserUk (Patriarch)
on Mar 05, 2012 at 14:36 UTC ( [id://957908]=note: print w/replies, xml ) Need Help??


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?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://957908]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (5)
As of 2024-04-18 02:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found