Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Problem with Tie::RegexpHash

by sch (Pilgrim)
on Oct 10, 2002 at 17:36 UTC ( #204250=note: print w/ replies, xml ) Need Help??


in reply to Re: Re: Re: Problem with Tie::RegexpHash
in thread Problem with Tie::RegexpHash

Yup, having to do that - was trying to get something working quickly and hoped someone else had come across a solution

What I'm trying to do is a simple parser for some commands and I was thinking of using a hash with the keys being regexp's that would match commands and the value's being references to functions - if anyone knows of another way of doing it I'm always willing to change direction mid-flow :)


Comment on Re: Problem with Tie::RegexpHash
Replies are listed 'Best First'.
Re: Re: Problem with Tie::RegexpHash
by sch (Pilgrim) on Oct 10, 2002 at 18:43 UTC

    decided to add this as a seperate node

    This is the starting point I've got so far:

    #!/usr/bin/perl -w use strict; use diagnostics; my %cmds; my $rgx; my $sub; $cmds{qr/^\s*quit/} = \&quit; $cmds{qr/^\s*cmd .*/} = \&cmd; my $txt = "cmd 12 arg2"; foreach $rgx (keys(%cmds)) { if ( $txt =~ /$rgx/i ) { $sub = $cmds{$rgx}; &$sub($txt); } } exit; sub quit { print "called quit\n"; } sub cmd { my ($cmd, @argx) = split /\s+/, $_[0]; print "called ".$cmd." with ".$argx[0]." ".$argx[1]."\n"; }

    which when called as above returns:

    called cmd with 12 arg2

    and if the line:
    my $txt = "cmd 12 arg2";
    is changed to
    my $txt = "quit";
    returns:

    called quit

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (16)
As of 2015-07-30 17:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (273 votes), past polls