in reply to Re^3: hash substitution in regex
in thread hash substitution in regex

I wonder what changes one would consider if the lists were long and you were worried about performance.

Hashes are relatively fast; if you're worried about loading the whole thing into memory, a database (such as DBD::SQLite) or maybe DBM file come to mind.

But first, how large are the files? How much memory and CPU usage is "too much"? If you're not approaching those limits don't worry just yet :-)

(By the way, while it doesn't really hurt anything except readability, you don't need to declare use strict; use warnings; etc. at the top of every sub if you've already declared it at the top of the file.)

Replies are listed 'Best First'.
Re^5: hash substitution in regex
by Aldebaran (Curate) on Aug 21, 2014 at 19:38 UTC

    Are you sure about that? I was cleaning up these routines and modules and thought I saw output that was unitialized that would otherwise have drawn an error.

    To be honest, I'd rather have the output than the error. I can see when the data hasn't been initialized. Short of any criticisms I receive, this represents what I was trying to achieve on this thread: Typical output

    I'm fascinated by quines, and wrote a couple routines that are quine-ish:

    sub write_script { use Text::Template; use File::Slurp; use 5.010; my $rvars = shift; my %vars = %$rvars; my $tmpl = $vars{"code_tmpl"}; say "tmpl is $tmpl"; my $file = $vars{"script_file"}; my $text = read_file($file); my %data = ('script', $text); my $template = Text::Template->new(SOURCE => $tmpl) or die "Couldn't construct template: $!"; my $result = $template->fill_in(HASH =>\%data); return \$result; } sub write_module { use 5.010; use File::Spec; use File::Slurp; my $rvars = shift; my %vars = %$rvars; my $tmpl = $vars{"module_tmpl"}; say "tmpl is $tmpl"; my $fspecfile = File::Spec->rel2abs(__FILE__); my $text = read_file($fspecfile); my %data = ('module', $text); my $template = Text::Template->new(SOURCE => $tmpl) or die "Couldn't construct template: $!"; my $result = $template->fill_in(HASH =>\%data); return \$result; }

    They almost work, but the code tags for html can't quite pull it off, yet it gives as much of a listing as most people would be interested in.