#!/usr/bin/perl -w
use strict;
use warnings;

#the problem started with using split with the space delimeter
#this code only demonstrates my attempts to respect quoted strings
#while a user enters space separated commands and parameters
#command usage: adduser userid password fullname location accesslevel
#example command entered by hand is:
#adduser emp09 password "Al Bundy" "Main Building" full
#
#a variable would become:
my $command = "adduser emp09 password \"Al Bundy\" \"Main Building\" full";
my @parameters;

print "Output 1\n";
print "$command\n";
#using split by a space delimeter would yeild 8 parameters, there should
#be only 6 if the quoted strings were not split
@parameters = split / /, $command;
print "$_\n" foreach @parameters;

#I've chosen to modify $command and add a ':' character (used as 
reserved character)
#in place of any space that is inside of a quoted string
$command =~ s/(".*) (.*")/$1:$2/g;
#remove the quotes
$command =~ s/\"//g;
print "\nOutput 2\n";
print "$command\n";

@parameters = split / /, $command;
foreach (@parameters) {
        $_ =~ s/:/ /g;
        print "$_\n";
}

#This is start towards a solution, however it is not working for both 
sets of quoted
#strings.  Al Bundy should be one parameter instead of two as well.
#I assume this is caused by the reqex I've written.  I also want to make 
sure I'm not
#going about this the hard way or reinventing the wheel

_______________________________________________
Perl-Unix-Users mailing list
Perl-Unix-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to