> 
> Thanks, I know how to use split (I think).  Since the data 
> comes in any order, and I have to corellate it, I can't think 
> of a way that split will fix me up - Maybe I'm missing 
> something.  Can you give me an example?
> 

Ok I'll give her a go

my %results;
my $cnt = 1;
foreach $line(@Array) {
        
        my %tmp;
        my $switch;
        my $value;

        %tmp = split(/\s/, $line); 

# this assumes that every piece of data has a switch so it wouldn't work on  '-I love 
you' because -I and love 
# would be together but then you would be lonely , it would especially be bad if it 
had switches after it 
# '-I love you -j enny -I mforestgump'
# if this is the case you may have to put it in an array and process that somehow to 
get the switch/value combos 
# and then do something with the bare values ( I guess I should be calling them 
arguments oh well )

        foreach $switch(keys %tmp) {    
                $results{$cnt}{$switch} = $value;
        }
        $cnt++
}

print $results{'1'}{'-h'}; # would print post1 from your three line example below

Give that a go and see if it doesn't help!

DMuey

> deb
> 
> 
> Dan Muey <[EMAIL PROTECTED]> had this to say,
> 
> > perldoc -f split
> > 
> > Will fic you up!
> > 
> > Dmuey
> > 
> > > Hi Guys,
> > > 
> > > I have an array in which each element is a line commandline
> > > data.  It looks something like this -
> > > 
> > > @Array contains lines:
> > > 
> > > post1: -r [EMAIL PROTECTED] -x cat-100 -h post1
> > > post2: -x tel -h post2
> > > post3: -h post3 -x hifi
> > > 
> > > And so on.  The order of the options varies, and there may or
> > > may not be a 
> > > -r $arg on the line.
> > > 
> > > These lines are parsed from a file with more lines, of which
> > > I extracted all the lines with -h:
> > > 
> > > open (F, "<$File");
> > > 
> > > while (<F>) {
> > >    if ($_ =~ / -h /) {
> > >       # remove crud
> > >       s/ \"\|//;
> > >       s/\/some\/crud\/path argument //;
> > >       s/\"$//;
> > >       # store what's left
> > >       push @Array, $_;
> > >    }
> > > }
> > > 
> > > What I really need to do is build a relationship between the
> > > first field 
> > > (which is the same as the argument to -h) and the argument to 
> > > -x.  The -x flag can be dropped, as they're not needed.
> > > 
> > > So it looks like I need to build a hash based.
> > > 
> > > But I can't can't grok how to parse each line out to do what
> > > I need, then move on to the next line (all lines are 
> > > unrelated to each other).
> > > 
> > > I've been using shift, but then I'm doing something like,
> > > (psuedo code):
> > > 
> > > if ($_[0] eq "-r") { $r = (shift);}
> > > 
> > > but if sub 0 doesn't eq -r, and I shift until I get to -x,
> > > say, and use that for the $x = (shift), how can I be 
> > > efficient to check again for -r, which I still haven't found?
> > > 
> > > Is this making any sense?
> > > 
> > > Thanks,
> > > 
> > > deb
> > > 
> > > 
> > > 
> > > --
> > > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> > > =-=-=-=-=-=-=-=-=-
> > >           There are 010 types of people in the world:
> > >        those who understand binary, and those who don't.
> > > τΏτ   111,111,111 x 111,111,111 = 12,345,678,987,654,321 (decimal)
> > >  ~ 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > --
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > 
> > > 
> 
> -- 
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> =-=-=-=-=-=-=-=-=-
>           There are 010 types of people in the world:
>        those who understand binary, and those who don't.
> τΏτ   111,111,111 x 111,111,111 = 12,345,678,987,654,321 (decimal)
>  ~ 
> 
> 
> 
> 
> 
> 
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to