in reply to Code Optimization v5.8.1

In addition to what the others said, I would also like to pint out that you can build RegExes "on the fly" and get rid of that foreach (keys ... loop in your program. I solved the original problem because it is easier ;-):
#!perl use strict; use warnings; my %acronyms = ( 'HTML' => "Hypertext Markup Language", 'ICBM' => "Intercontinental Ballistic Missile", 'EEPROM' => "Electronically-erasable programmable read only memory +", 'SCUBA' => "Self Contained Underwater Breathing Aparatus", 'FAQ' => "Frequently Asked Questions", 'LCARS' => "Library Computer And Retrieval System", 'NASA' => "National Aeronautical and Space Administration" ); my $regex; { my $temp = join '|', map quotemeta, keys %acronyms; $regex = qr/($temp)/o; } while (<>) { s/$regex/$1 ($acronyms{$1})/g; print; }
Anyways, you should always use strict; no matter what; it helps a lot with syntax problems.

Hope this helped.
Entropy is the tendency of everything going to hell.

Replies are listed 'Best First'.
Re: Re: Code Optimization v5.8.1
by diotalevi (Canon) on May 20, 2004 at 18:42 UTC
    That is a useless use of /o.
Re: Re: Code Optimization v5.8.1
by jdporter (Chancellor) on May 20, 2004 at 18:42 UTC
    Ah, that's what I was going to say!

    So here's something a little different:
    local $" = ';'; system qq( sed '@{[ map "s/\\<$_\\>/$_ ($acronyms{$_})/g", keys %acron +yms ]}' );
    Of course, if the acronym list is long, the above will smack into the command line length limit; in that case, it's easy enough to write a sed script file.
Re: Re: Code Optimization v5.8.1
by Jasper (Chaplain) on May 21, 2004 at 10:25 UTC
    and a useless use of $1 ;)