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