ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/Perl-LibExtractor/LibExtractor.pm
(Generate patch)

Comparing cvsroot/Perl-LibExtractor/LibExtractor.pm (file contents):
Revision 1.20 by root, Fri Jan 27 20:39:07 2012 UTC vs.
Revision 1.21 by root, Fri Jan 27 22:58:49 2012 UTC

31 31
32=cut 32=cut
33 33
34package Perl::LibExtractor; 34package Perl::LibExtractor;
35 35
36our $VERSION = '1.0'; 36our $VERSION = '0.1';
37 37
38use Config; 38use Config;
39use File::Spec (); 39use File::Spec ();
40use File::Temp (); 40use File::Temp ();
41 41
553=cut 553=cut
554 554
555sub add_eval { 555sub add_eval {
556 my ($self, $eval) = @_; 556 my ($self, $eval) = @_;
557 557
558 (my $file = substr $eval, 0, 64) =~ s/\015?\012/\\n/g;
559
558 my $pkg = "libextractor" . ++$self->{count}; 560 my $pkg = "libextractor" . ++$self->{count};
559 $eval =~ s/\x00/\x00."\\x00".q\x00/g; 561 $eval =~ s/\x00/\x00."\\x00".q\x00/g;
560 $self->_trace ($eval, 562 $self->_trace ($file,
561 "local \$^H = \$^H;" # vvvvvvvvvvvvvvvvvvvv = use strict; use utf8 563 "local \$^H = \$^H;" # vvvvvvvvvvvvvvvvvvvv = use strict; use utf8
562 . "eval q\x00package $pkg; BEGIN { \$^H = \$^H | 0x800600 } $eval\x00; die \"\$\@\" if \$\@;\n" 564 . "eval q\x00package $pkg; BEGIN { \$^H = \$^H | 0x800600 } $eval\x00; die \"\$\@\" if \$\@;\n"
563 ); 565 );
564} 566}
565 567
637=cut 639=cut
638 640
639sub add_core_support { 641sub add_core_support {
640 my ($self) = @_; 642 my ($self) = @_;
641 643
642 $self->add_eval ('my $v; open my $fh, "<", \$v'); 644 $self->add_eval ('
643 $self->add_eval ('my $x = chr 1234; "\u$x\U$x\l$x\L$x"; $x =~ /\d|\w|\s|\b|\R|\h|\v|$x/i'); 645 # PerlIO::Scalar
646 my $v; open my $fh, "<", \$v;
647
648 # various unicore regex/builtin gambits
649 my $x = chr 1234;
650 "\u$x\U$x\l$x\L$x";
651 $x =~ /$_$x?/i
652 for qw(\d \w \s \b \R \h \v);
644 $self->add_eval ('split " ", chr 1234'); # usually covered by the regex above 653 split " ", $x; # usually covered by the regex above
654 ');
655
645 $self->add_eval ('/\x{1234}(?<a>)\g{a}/') if $] >= 5.010; # usually covered by the regex above 656 $self->add_eval ('/\x{1234}(?<a>)\g{a}/') if $] >= 5.010; # usually covered by the regex above
646} 657}
647 658
648=item $extractor->add_unicore 659=item $extractor->add_unicore
649 660

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines