i just was wandering if there _could_ be more readable way to do this. Andnot only for to be readable. If loops (and maybe some other builtin commands, too - we are not talking only about whiles and for's) returned values, programming might be a way different because you could combine loops with for example those greps and maps. Consider really what would be possible to do with this (maybe look at those examples again, too, to get the idea). Also You can not do everything with grep and map and on the other hand they are not very fast to read or debug when comparizing with this.
i've _always_ wanted to have a program language where loop-commands could return whatever is needed. It might be that someday i have to write such language or make a fast poor implementation. If this ability would be implemented wisely to perl (or to some other language), it wouldn't even affect to performance (ok, maybe little bit). But it'd bring much power because You could have more control, readibility and straightforwardity in Your code - and maybe more speed in some circumstances, too.
Kindly, Ville Jungman
From: "Hanson, Rob" <[EMAIL PROTECTED]> @values = (1,3,5,7); @bigger_than_4 = map {$_.'a'} grep {$_>4} @values; print "@bigger_than_4"; > You need to escape a loop with a value.
Not sure I understand what you are trying to accomplish, but this is the equivalent of your Perl version and is as short as your proposed syntax.
while (<FH>) { next unless /stop/; #somthing last; }
Rob
-----Original Message----- From: Ville Jungman [mailto:[EMAIL PROTECTED] Sent: Thursday, September 25, 2003 8:25 PM To: [EMAIL PROTECTED] Subject: Should loops return a value?
Shortly, I think it might be good if loops (etc.) could return values.
Example 1: Retnext (like 'return next' borrowed from pl/sql) You want to extract numbers from an array if they are > 4 and put an 'a'-letter after them.
@values=(1,3,5,7);
@bigger_than_4= # get an array from loop
foreach $value(@values) {
retnext $value."a" if $value > 4; # return value from loop if > 4
}
;
Example 2: Retlast (== perl 'last'-command with a value)
You need to escape a loop with a value. Familiar way:
while(<FH>){ if(/stop/){ $array_terminated='true'; last; } } if($array_terminated){ # something }
This could be written as:
if( while(<FH>){ retlast if /stop/; # returns $_ by default } ){ # something }
So, not very conserverite but think what all you could do with this. And please, let me know what you think about this. Crap?
---
ville jungman, 2 laureston crescent, tower, blarney, cork, ireland tel. + 353 - 21 - 451 6847, http://www.kolumbus.fi/vilmak usko Herraan Jeesukseen, niin sinä pelastut. (apt. 16:31)
_________________________________________________________________ Add photos to your messages with MSN 8. Get 2 months FREE*. http://join.msn.com/?page=features/featuredemail
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
_________________________________________________________________
MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*. http://join.msn.com/?page=features/virus
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]