in reply to RE: RE: RE: RE: Re: @ARGV Manipulation
in thread @ARGV Manipulation

Ok, Merlyn, so maybe you and your book learned me something:
#!/usr/local/bin/perl5 #I'll call this snippet exfields.pl as in "EXtractFIELDS" #zcat command for gzipped files $gzcatcmd="gunzip -c"; # I'll need this eventually # Input parameters $RegExp = ""; # Default no regexp $MatchFld = ""; # Default no field match $LastHdr = ""; # Last read header line $DbFSplit = ' '; # Need this form for split $DbOFSep = ' '; # Default output field delimiter $VBarDel = 0; # Flag default not splitting by vertical bar ($progname = $0) =~ s/^.*\/([^\/*]+)$/$1/; # name of this program while (@ARGV) { $Param = shift @ARGV; if ($Param eq "-s") { $RegExp = shift @ARGV; # Search expression } elsif ($Param eq "-f") { $MatchFld = shift @ARGV; # Search field specifier } elsif ($Param eq "-e") { $FList = shift @ARGV; # field extract list } elsif ($Param =~ /^\-/) { &ErrorExit; #I'll define this later; you get the point } else { push @FileList,$Param; } } # Flag to substitute for whitespace if the new field delimiter #includes whitespace and the old one did not. The assumption is #that if the old delimiter included whitespace, we do not need #to convert existing whitespace in fields. May be modified by # #DFD declaration.. if (($DbOFSep =~ /^ +$/) && ($DbFSplit !~ /^ +$/)){ $FixSpaces = 'Y'; # can't have Null fields or whitespace } else { $FixSpaces = ''; # can't have Null fields or whitespace } @OrigFields = split(',',$FList); unless (@FileList) {push @FileList,"-";} print " @FileList\n";
</CODE If you run this: <CODE> exfields.pl -e Name,Rank,SerialNumber file.gz
it will return:
Name,Rank,SerialNumber
Great. Now what? I've succesfully coded HALF of what I wanted to do! What I CAN'T figure out how to do, is:
exfields.pl -e Name,Rank,SerialNumber file.gz | Who,What,Where another +file.gz
And have it return:
print "@FileList_1\n"; #prints "Name" "Rank" SerialNumber" print "@FileList_2\n"; #prints "Who" "What" "Where"
How am I doing as far as explaining what I'm trying to do?

Replies are listed 'Best First'.
RE: RE: RE: RE: RE: RE: Re: @ARGV Manipulation
by bastard (Hermit) on Sep 16, 2000 at 09:50 UTC
    exfields.pl file1.gz Name,Rank,SerialNumber file2.gz Who,What,Where

    to break this into params try this code:

    if ($ARGV[3] ne "") { $file1 = $ARGV[0]; @list1 = split (/,/, $ARGV[1]); $file2 = $ARGV[2]; @list2 = split (/,/, $ARGV[3]); } else { print "Enter all required parameters"; }
    also note: there can be no spaces in the lists