Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

UPDATE: Variable number of words/fields in a line/record

by Tuna (Friar)
on Jun 16, 2001 at 07:46 UTC ( [id://89003]=note: print w/replies, xml ) Need Help??

in reply to Variable number of words/fields in a line/record

Sorry to reply to my own post, but I think that I could state my problem a bit more clearly.

How can I capture each "element" of a line, and store it in a variable, regardless of how many elements are in the line? So, if LINE_1 contains 9 elements, I need to create 9 variables. If it contains 10, I need to create 10...and so on.

I know that if someone reads this, they're gonna ask what I'm really trying to do:

The program will grab each element as described, ie:
conduit permit tcp|host||eq|139|host|
then, it will ignore "conduit" and "permit", and insert the remaining variables into a database.

Replies are listed 'Best First'.
Re: UPDATE: Variable number of words/fields in a line/record
by jeroenes (Priest) on Jun 18, 2001 at 10:58 UTC
    Don't use variables, but an array or hash. Would do something like:
    while( <> ){ split; splice @_, 0, 2; #removes first two elements store_elements_function( @_ ); #sub to store the remainder }
    If you really want to name the items, use a hash. Define the names first:
    my @std_keys = qw/proto .../; my @ext_keys = qw/name9 name10 name11/; .. #and in loop: my %hash; if( @_ < 9 ){ @hash{@std_keys} = @_; } else { @hash{(@std_keys, @ext_keys)} = @_; } print "My proto is: ",$hash{'proto'},"\n"; ...
    Hope this helps. You can read up on it in perldata.

    "We are not alone"(FZ)

Log In?

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

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2024-05-24 09:38 GMT
Find Nodes?
    Voting Booth?

    No recent polls found