TCLUG Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [TCLUG:2586] perl question
It might be better to test for arguments in a seperate foreach. Here's
something I came up with quick, but it doesn't do '--recursive' or
'--force', but that would be easy to add in.
'rm' it self doesn't allow you to start any filename with a '-'. It gives
an error instead. To get around this you can do 'rm ./-rf' when you need
too. This example works like that, since it exits if it doesn't know what
the argument is.
Hope this is helpful as a small example.
(There is also the getops perl module for this, and it works quite
well actually. That's what I'd probably use.)
-Shawn
#!/usr/bin/perl
foreach $n (0..$#ARGV) {
if ($ARGV[$n] =~ /^-/) { # detects - at the beginning of the string
$ARGV[$n] =~ s/-//g; # remove -
if ($ARGV[$n] =~ /r/) {
$RECURSIVE = 1;
$ARGV[$n] =~ s/r//g; # remove r
}
if ($ARGV[$n] =~ /f/) {
$FORCE = 1;
$ARGV[$n] =~ s/f//g; # remove f
}
if ($ARGV[$n] !~ /^\s*$/) { # if it isn't just white space
print STDERR "Unknown options: `$ARGV[$n]'\n";
exit -1;
}
}
}
foreach $n (0.. $#ARGV) {
if ($ARGV !~ /^\s*$/) { # it's not just white space
do_it ($ARGV[$n]);
}
}
sub do_it {
my $arg = shift;
print $arg . "\n";
}
--
Shawn T. Amundson
amundson@gimp.org http://www.gimp.org/~amundson
"The assumption that the universe looks the same in every
direction is clearly not true in reality." - Stephen Hawking