pp -v 3 @ppopts_test.txt -o test4.par -E "print 'test4';"

With ppopts_text.txt being the same as in my previous msg,

does the same: lib/auto/clone instead of auto/Clone

If I search in the lib folder (see below), I see that clone is much used and I 
don’t see where is the offending call that causes the change in case.

At the end I just have to
ren clone Clone
once I have unzip the par archive to correct the problem

François

C:\strawberry\perl\site\lib>findstr /NS ::clone *.pm
DBIx\Class\CDBICompat\Relationships.pm:163:    my %hash = %{ 
Clone::clone($class->__meta_info || {}) };
Hash\Merge.pm:283:                Clone::clone( shift, $depth );
Hash\Merge.pm:297:                Clone::PP::clone( $var, $depth );
HTTP\Request.pm:45:    my $clone = bless $self->SUPER::clone, ref($self);
HTTP\Response.pm:52:    my $clone = bless $self->SUPER::clone, ref($self);
Rose\DB\Object\Loader.pm:74:    *clone = \&Scalar::Util::Clone::clone;
Rose\DB\Object\Loader.pm:80:    *clone = \&Clone::clone;
Rose\DB\Object\Metadata\MethodMaker.pm:138:            $info->{$type}{$attr} = 
Clone::clone($subclass_info->{$type}{$attr});
Rose\DB\Object\Metadata\Object.pm:24:  my $clone = Clone::clone($self);
Rose\DB\Object\Metadata.pm:283:    return Scalar::Util::Clone::clone($self);
Rose\DB\Object\Metadata.pm:287:  my $meta = Clone::clone($self);
Rose\DB\Registry\Entry.pm:192:    $dump{$attr} = Clone::PP::clone($value);
Rose\DB\Registry\Entry.pm:202:    $dump{$attr} = Clone::PP::clone($value);
Rose\DB\Registry\Entry.pm:208:sub clone { Clone::PP::clone($_[0]) }
Rose\DB.pm:692:  return Clone::PP::clone(scalar 
$class->default_connect_options);

C:\strawberry\perl\site\lib>findstr /NS ::Clone *.pm
Rose\DB\Object\Loader.pm:73:    require Scalar::Util::Clone;
Rose\DB\Object\Loader.pm:74:    *clone = \&Scalar::Util::Clone::clone;
Rose\DB\Object\Metadata.pm:22:# Attempt to load Scalar::Util::Clone at runtime 
and ignore any errors
Rose\DB\Object\Metadata.pm:24:eval { local $@; require Scalar::Util::Clone };
Rose\DB\Object\Metadata.pm:280:  # The easy way: use Scalar::Util::Clone
Rose\DB\Object\Metadata.pm:281:  if(defined $Scalar::Util::Clone::VERSION)
Rose\DB\Object\Metadata.pm:283:    return Scalar::Util::Clone::clone($self);
Rose\DB\Object.pm:2088:B<Tip:> When using perl 5.8.0 or later, the 
L<Scalar::Util::Clone> module is highly recommended.  If it's installed, it 
will be used to more efficiently clone base-class metadata objects.


From: [email protected] [mailto:[email protected]] On Behalf Of 
Roderich Schupp
Sent: samedi, 20. septembre 2014 16:32
To: RAPPAZ Francois
Cc: [email protected]
Subject: Re: use clone -> crash my exe

On Fri, Sep 19, 2014 at 3:22 PM, RAPPAZ Francois 
<[email protected]<mailto:[email protected]>> wrote:
One more thing: I piped the output of pp in a file and I can read

C:\strawberry\perl\site\bin/pp: ... adding 
C:/strawberry/perl/site/lib/auto/clone/Clone.bs as lib/auto/clone/Clone.bs
C:\strawberry\perl\site\bin/pp: ... adding 
C:/strawberry/perl/site/lib/auto/clone/Clone.dll as lib/auto/clone/Clone.dll
C:\strawberry\perl\site\bin/pp: ... adding <string> as 
lib/auto/clone/autosplit.ix

That the clone with lower case is outputted here (I did check that it is  
C:/strawberry/perl/site/lib/auto/Clone that I have on my disk

A stray "use clone" would have the same effect:

C:\temp>pp -vvv -p -o foo.par -E "use clone;"
E:\strawberry\perl\site\bin/pp: Packing 
C:\DOKUME~1\roderich\LOKALE~1\Temp\pp2G6Eh.pl
E:\strawberry\perl\site\bin/pp: Writing PAR on foo.par
E:\strawberry\perl\site\bin/pp: ... adding 
E:/strawberry/perl/vendor/lib/auto/clone/Clone.dll as lib/auto/clone/Clone.dll
E:\strawberry\perl\site\bin/pp: ... adding <string> as 
lib/auto/clone/autosplit.ix
E:\strawberry\perl\site\bin/pp: ... adding <string> as 
lib/clone.pm<http://clone.pm>
or even

C:\temp>pp -vvv -p -o foo.par -E "clone::wtf();"
E:\strawberry\perl\site\bin/pp: Packing 
C:\DOKUME~1\roderich\LOKALE~1\Temp\pp213vD.pl
E:\strawberry\perl\site\bin/pp: Writing PAR on foo.par
E:\strawberry\perl\site\bin/pp: ... adding 
E:/strawberry/perl/vendor/lib/auto/clone/Clone.dll as lib/auto/clone/Clone.dll
E:\strawberry\perl\site\bin/pp: ... adding 
E:/strawberry/perl/vendor/lib/auto/clone/autosplit.ix as 
lib/auto/clone/autosplit.ix
E:\strawberry\perl\site\bin/pp: ... adding 
E:/strawberry/perl/vendor/lib/clone.pm<http://clone.pm> as 
lib/clone.pm<http://clone.pm>
That's because Module::ScanDeps has the following (mis?)feature: if it sees a 
fully qualified function call
like "... Foo::Bar::frobnicate(...)..." ANYWHERE in a file it goes looking for 
a module Foo::Bar.
Cheers, Roderich

Reply via email to