in reply to Re^11: localizing lexical without messing with tie ?
in thread localizing lexical without messing with tie ?

Named parameters in perl lingo are something like

 tst(-named=> parameter)

I'm experimenting with functional programming and manipulating closures.

(Update: But if you call $a and $b in sort {} "named parameters", then yes.)

> Could I buy a verb please?

I'm reluctant to deepen this discussion, many people here have a more emotional attitude about the "right way to do it".

(this results normally in useless flames where I won't/can't compete)

> (using a bad syntax)

sic!

> You're looking for any magic that has a side-effect that isn't undone by the end of the following:

my $saved = $magical; ... $magical = ...; ... $magical = $saved

Yes I'm trying to prevent possible conflicts and having a more fault-tolerant design,thats why I'm forbidding tied vars.

UPDATE: BTW pos can be handled!

sub dont_mess_pos { my $vr=\$_[0]; my $pos=pos($$vr); my $s=$$vr; $_[0]=42; $$vr=$s; pos($$vr)=$pos }

DB<80> my $a="xxx";scalar ($a=~/x/g);print pos($a); tst $a; print $a +,pos($a) 1xxx1

Cheers Rolf

Replies are listed 'Best First'.
Re^13: localizing lexical without messing with tie ?
by ikegami (Patriarch) on Sep 11, 2010 at 14:40 UTC

    Named parameters in perl lingo are something like tst(-named=> parameter)

    That's one means of achieving named parameters. (It also provides named arguments.) However, the method that was mentioned was Sub::Parameters. It's much closer to what you want. There might be others; I just mentioned the first I found.

    many people here have a more emotional attitude about the "right way to do it".

    What's the "right way" is a matter of debate because. However, some ways are clearly bad ways of doing it, such as having to declare the callee's parameters in a scope that's visible to both the callee and the caller.

      > That's one means of achieving named parameters. (It also provides named arguments.)

      your distinction between "parameters" and "arguments" is strange, especially when they are named it doesn't make much sense.

      compare http://en.wikipedia.org/wiki/Parameter_(computer_science)#Parameters_and_arguments

      > ... was Sub::Parameters. It's much closer to what you want.

      Sub::Parameters depends on non core modules for aliasing.

      > ... such as having to declare the callee's parameters in a scope that's visible to both the callee and the caller.

      that's the nature of closures.

      Cheers Rolf

        The link supports my usage. A parameter is the slot that takes the value (i.e. the variable inside the function). Argument is a value passed to a function (i.e. the expression in the caller).

        Sub::Parameters depends on non core modules for aliasing.

        Core doesn't provide a ready made solution, so necessarily, the code must come from outside the core.

        that's the nature of closures.

        Completely false.

        You're obviously trying to avoid solving your problem, so I'm off.