In article <[EMAIL PROTECTED]>, Arashi wrote:

> Kevin Pfeiffer wrote:
[...]
> I have a couple of questions about your script, if you don't mind
> explaining.  I'm a newbie, so pls. bear with me if my questions sound
> really obvious...

So am I and I know the feeling (but this list takes good care of those 
interested in learning Perl).

> For this type of problem, is it better to use subroutines like what
> you've done below, than use switch/if-elsif?

I don't know; I want to look at switch myself sometime.
 
> The second line is "my $file = '';" How does the empty string work?

I don't think it was needed here. "my $file;" should be fine I believe.

> Inside the if block, there are statements like "empty_trash($trash_path)
> if $1 eq 'e';".  Does $1 refer to $ARGV[0]? (I'm still getting used to
> things like $_ and @ARGV!)

The $1 contains the result of one of Perl's regex memory parentheses (page 
110). As a backreference within the regex you would use \1 (for the 1st 
paren counting left to right) but outside the regex (for at least a while) 
you can then get this captured value via $1 (etc.). So my regex matches the 
dash and then captures a single character following (or fails). The 
"shift;" removes the first value from @ARGV if the regex matches (because 
this value then is an option and not a filename).

There's a handy module that comes with Perk for such work: GetOpts (I think 
it's called) and it specializes (very easily) in handling command line 
options.

> <snip>
> while (@ARGV) {
>     my $file = '';
> 
>     if ($ARGV[0] =~ /^-(.)$/) {
>        shift;                            # pull option off @ARGV
>        empty_trash($trash_path) if $1 eq 'e';
>        restore_file([EMAIL PROTECTED]) if $1 eq 'r';
>        ls_trash($trash_path) if $1 eq 'l';
>        version() if $1 eq 'v';
>        usage();
> 
>     } else {
>        $file = shift;
>        $file =~ s/^--/-/;                # allows dash to be escaped
>        move_to_trash($file);
>     }
> }

I hope that helps - there are better ways I'm sure to do things than mine - 
I really am only a few pages ahead of you :-)


-K
-- 
Kevin Pfeiffer
International University Bremen

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

Reply via email to