> Okay, I'm still struggling.  <sigh>  I just cannot seem to get my mind to
> stop, look, and listen.  Here's some code I'm working on:

> ------------------------- 8-< --------------------------------------------
> use strict;

You might also want to add a use warnings after use strict and check how 
your program runs.

> my %cmdLine;
> my $DBG = 1;

> while (<DATA>) {
>        chomp;
>
>        my ($adx, $rest) = (split(/\:/,$_));

You don't have to escape ':' here, you can just write this as
my ($adx, $rest) = split (/:/);
perldoc -f split

>        if ($DBG) {print "\$adx=\t<$adx>\n\$rest=\t<$rest>\n";}
>
>        while ($rest ne "") {

If $_ contained the string 'abcd:', $rest will be undefined. This should 
be written as
while (defined ($rest) && $rest ne "")

>                my ($opt, $arg, $newRest) = ($rest =~ /\s*([\-a-z]*)\s+([^ 
> ]*)\s+(.*)/);

You don't have to escape '-' inside a character class when '-' is the 
first or last character within it. You should also use \s instead of [^ ].
perldoc perlre
Better written as
my ($opt, $arg, $newRest) = ($rest =~ /\s*([-a-z]*)\s+(\s*)\s+(.*)/);

>                $rest = $newRest;
>                $cmdLine{$opt} = $arg;
>        }
> }

> __DATA__
> ten-me-900: -r timbu -x me-900 -h ten-me-900
> hidit: -r tenbu -x networks-users -h hidit
> postal: -x direct -h postal
> pickit: -h pickit -x uncrp -r oakd

> ------------------------- 8-< --------------------------------------------

> Why doesn't the while loop iterate all of $rest?  I can't seem to figure 
> out how to get the loop to act on the entire $rest, and get it into the 
> hash.  

Make the above changes and see how it works

> What am I doing wrong?

I would suggest you use Getopt::Std for parsing switches
perldoc Getopt::Std

Here is an example
#!/usr/local/bin/perl
use strict;
use warnings;
use Getopt::Std;
use Data::Dumper;

while (<DATA>) {
        my %cmdLine;
        local @ARGV = split;
        (my $prog = shift (@ARGV)) =~ s/:$//;
        getopts ('r:x:h:', \%cmdLine);
        print Dumper(\%cmdLine);
}

__DATA__
ten-me-900: -r timbu -x me-900 -h ten-me-900
hidit: -r tenbu -x networks-users -h hidit
postal: -x direct -h postal
pickit: -h pickit -x uncrp -r oakd



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

Reply via email to