in reply to storing pre-compiled binary regexes

What I want to do, is precompile the binary regexes and store them with Storable.
I want to be 20 pounds thinner, 6 inches taller, and be debt-free, and no longer a Felon.

I won't get my wishes within this lifetime. You probably won't get your wishes until at least Perl 5.10. {grin}

-- Randal L. Schwartz, Perl hacker

  • Comment on •Re: storing pre-compiled binary regexes

Replies are listed 'Best First'.
Re^2: storing pre-compiled binary regexes
by Random_Walk (Prior) on Apr 14, 2008 at 10:57 UTC

    Six years on and 5.10 is with us. Is it now possible to serialise and store the binary compiled version of the regex ?

    Cheers,
    R.

    Pereant, qui ante nos nostra dixerunt!

      OK, not sure if I am doing something wrong but from my testing Perl 5.10 can not do this either

      This is perl, v5.10.0 built for MSWin32-x86-multi-thread (with 3 registered patches, see perl -V for more detail)
      Here is an attempt to store some compiled regex
      #!/usr/bin/perl #create the Storable file use warnings; use Storable; use Data::Dumper; my %sigs; while (<DATA>){ chomp; ($name,$value) = split(/\s+=\s+/,$_); next unless $value; $sigs{$name}= qr/$value/; } store(\%sigs, 'z1.bin') or die "Can't store %a in z1.bin !\n"; print Dumper \%sigs; exit;
      And here I try to read it back again
      #!/usr/bin/perl #read the Storable file #use strict; use warnings; use Storable; use Data::Dumper; my %sigs = %{retrieve('z1.bin')} or die "Unable to retrieve from z1.bi +n:$!\n" ; print Dumper \%sigs; exit; __DATA__ 1_Friday = Friday 2_random = [Rr]andom 3_catch any = .*
      These are the results of the two dumps:
      C:\Perl_5_10\play>..\bin\perl store.pl $VAR1 = { '3_catch any' => qr/(?-xism:.*)/, '2_random' => qr/(?-xism:[Rr]andom)/, '1_Friday' => qr/(?-xism:Friday)/ }; C:\Perl_5_10\play>..\bin\perl read.pl $VAR1 = { '3_catch any' => qr/Regexp=SCALAR(0x1a6bca4)/, '2_random' => qr/Regexp=SCALAR(0x1a7c90c)/, '1_Friday' => qr/Regexp=SCALAR(0x1c47c7c)/ };
      if I try to use the read back regex they fail to match

      Cheers,
      R.

      Pereant, qui ante nos nostra dixerunt!