develooper Front page | perl.perl6.language | Postings from April 2005

Re: -X's auto-(un)quoting?

Thread Previous | Thread Next
From:
Matt Creenan
Date:
April 23, 2005 11:17
Subject:
Re: -X's auto-(un)quoting?
Message ID:
op.spo6inrnolcsaq@god.kntnny.adelphia.net
On Sat, 23 Apr 2005 13:55:17 -0400, Mark A. Biggar <mark@biggar.org> wrote:
>
> After some further thought (and a phone talk with Larry), I now think
> that all of these counted-level solutions (even my proposal of _2.foo(),
> etc.) are a bad idea. They have a similar problems to constructs like
> "next 5;" meaning jump to the next iteration of the loop 5 level out.
> Any time you refactor you code and change levels, they break in a
> subtle and very hard to debug way, causing mysterious errors.  Just like
> the current Perl construct of "labeled loops" so that you can talk about
> the target loop explicitly, the proper solution for up-level access to
> $OUTER::OUTER::...::OUTER::_ is to create a named binding like
> "$uplevel_topic := $_;" at that upper level and then use that to refer  
> to it at lower levels.  Beside is ".......foo();" seven of eight levels
> up?  Any other way than explicit naming is madness; leading to
> unreadable and unmaintainable code.
>

Hm.. didn't really think of that.  Though, how often would that really  
happen?  You can just explicility refer to the topic if you refactor.  So  
long as there is another way, I'm not sure that problem constitutes not  
putting in such a shortcut.

I do see this as a being a bit confusing though:

	given open 'file a' {
		given open 'file b' {
			given open 'file c' {
				.say(...);
				..say(...);
				...say(...);
			}
		}
	}

Doesn't that just encourage writing confusing code?  Also, does anyone  
else initial read it as doing say on file a first, then b, then c; instead  
of c, b, a?

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About