Re: one liner for for and if

[email protected] (Richard Lee)
Newsgroups perl.beginners
Message-ID <[email protected]>
Rob Dixon wrote:
> Richard Lee wrote:
>   
>> #!/usr/bin/perl
>>
>> use warnings;
>> use strict;
>>
>> my @array = qw/one two three four/;
>>
>> print "$_\n" for @array last if "$_" eq q/three/;
>>
>>
>> [root@server tmp]# ./!$
>> ././././testthis2.pl
>> syntax error at ././././testthis2.pl line 8, near "@array last "
>> Execution of ././././testthis2.pl aborted due to compilation errors.
>>
>> Can someone fix my last statement on this program?
>>
>> I thought maybe this will work   but guess not... is there no easy way 
>> to do this?
>>
>> I don't want to do
>>
>> for (@array) {
>>      if .......
>>      }
>> }
>>
>>
>> just trying to see what the correct format is that for one liner that I 
>> am trying
>>     
>
> And you want to write it in one line why?
>
> print "$_\n" for grep /one/ .. /three/, @array;
>
> But there's nothing wrong with
>
> foreach (@array) {
>   print "$_\n";
>   last if /three/;
> }
>
> Rob
>   
#!/usr/bin/perl

use warnings;
use strict;

my @array = qw/one two three four/;

print "$_\n" for grep /three/, @array;

[root@server tmp]# !$
./test5.pl
three

this works well. However, that goes through entire array.. right?
So there is no true way to squeeze in the ' last ' .. ?

main reason is to see if it's doable(I like some of perl's idioms) and 
whether it is possible
The other reason is because I have a big array which I have to look in 
by 3 different steps
and I wanted to avoid 3 foreach loop in a row which key depends on 
preceding code and wanted to just go
---- simplied version----

my $something = $_ for @array last if "$_" eq q/three/;
my $something1 = $_ for @array last if "$_" eq q/$something/;
my $something2 = $_ for @array last if "$_" eq q/$something1/;

Anyway, I will try your code and report back.

thank you.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.