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/;


[EMAIL PROTECTED] 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;

[EMAIL PROTECTED] 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.


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to