Michele Dondi writes:
> On Tue, 22 Jun 2004, Juerd wrote:
> 
> > >   rename -v => 1, $orig, $new;
> [snip]
> > I think just using named arguments would be better and much easier.
> > 
> > sub rename ($old, $new, +$verbose) {
> >     say "Renaming '$old' to '$new'" if $verbose;
> 
> 
> On Tue, 22 Jun 2004, Brent 'Dax' Royal-Gordon wrote:
> 
> > It's already being done:
> > 
> >      rename $orig, $new :verbose;
> > 
> >      sub rename($orig, $new, +$verbose) {
> >          say "Renaming `$orig' to `$new'" if $verbose;
> 
> 
> On Tue, 22 Jun 2004, Luke Palmer wrote:
> 
> > No, builtins can and will have named arguments.  And you can even add
> > your own to builtin functions:
> 
> 
> Well, much of what has been said here seems to be quite a bit above my 
> head as far as my Perl6 knowledge is concerned. However I'd like to 
> provide some context for my proposal: one motivation is to give yet 
> more WTDI, and another one is to give a quick'n'easy WTD certain things.
> 
> AIUI the first point is already addressed as explained in your mails
> above. As for the second one, the key concept is that of "suitable
> defaults". For example, using Perl5 syntax, here's what I mean:
> 
>   perl -le 'unlink and print "removing $_" or warn "something: $!\n" for <*.txt>'
> 
> Well, it would be nice if that may just be
> 
>   perl -e 'unlink <*.txt> :v'

Well it's certainly not going to be that, since the <glob> operator is
going far, far away.

At first I thought it would be a good idea to just make it a perl
command-line argument:

    perl -ve 'unlink glob "*.txt"'

Since it would seem that one-liners would be their primary use.  But now
I think about the many times I've written in longer scripts:

    print "Moving $old to $new\n";
    rename $old => $new or die "Move failed: $!\n";
    # ...

And indeed I would love to have written:

    rename $old => $new :verbose;

Instead.

> And here of course I do *not* want to roll my own version of unlink to 
> manage the verbose info, otherwise it wouldn't be easier than in the 
> first attempt above. Even if put in a package, it would imply more 
> typing:
> 
>   perl -MVerbose -e 'unlink <*.txt> :v'
>          ^^^^^^^ or even more letters!!

Oh dear.  Not that.

I understand your logic, but I believe this case is tolerable if it need
exist.

> Of course you may ask why not using
> 
>   rm -v *.txt
> 
> from start instead, but then there are indeed situations in which perl is 
> actually useful. For example one I can think of (and done in practice) is 
> this:
> 
>   perl -lne 'rename $_, do{($t=$_)=~s/.../.../; $t}' files.txt
>                                     ^^^^^^^^^^ fake!

Just as a side note, that awful en passant substitution has been cleaned
up to a functional version something like:

    perl -lne 'rename $_, do { .s/.../.../ }' files.txt

Or perhaps:

    perl -lne 'rename $_, do { .subst(/.../, { ... }) } files.txt

Luke

Reply via email to