Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Shorten script

by l2kashe (Deacon)
on Jul 22, 2003 at 19:07 UTC ( #276880=note: print w/ replies, xml ) Need Help??


in reply to Shorten script

You could also use something along the lines of a dispatch table.

my %match = ( 'pattern_one' => 1, 'pattern_two' => 1, ); while (<F>) { next unless ( m/(match_pattern)/ ); print "PAGE ->\t$name\ndata ->"; print $match{$1} ? "\t\t$1\nMatched ->\t$hit\n" : " TEXT INFO HERE\n"; push(@files, $name); $ct++; } close(F);

In this case the %match is a little useless, as your blocks aren't really doing anything all that different aside from what to print. You are also using variables in the block that aren't being created in the block so its difficult to grasp exactly what you are trying to shorten. In a more complex case, the value of $match{pattern} could be a code ref, or any other data structure which could shorten the main loop a touch.. Something like

my %match = ( 'pattern_one' => [\&sub_one, $results_one], 'pattern_two' => [\&sub_two, $results_two], ); while (<F>) { chomp; next unless ( m/(match_pattern)/ ); unless ( $match{$1} ) { #something basic goes here next; } # get the right function from our dispatch table ($func, $results) = [ $match{$1} ]; # now call it, pass it the text to process, and store the # results. $results = &$func($1); } # END while <F> close(F);

In my own code, I tend to either make $results either an array or hash reference, depending on the situation, and the call may be altered to be say push(@$results, &$func($1)); or some such.

HTH, regards

use perl;


Comment on Re: Shorten script
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://276880]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (7)
As of 2014-12-28 01:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (177 votes), past polls