#!/usr/bin/perl -w use strict; use List::Util (qw/first/); #a core function in all Perl's use List::MoreUtils (qw/first_index/); #not core but a common module #first{} stops at the first occurrence, slightly faster than grep{} #first_index() reports index of {block} while (my $line = ) { my @array = split /\s+/, $line; print "A One is in: $line" if (first {$_ == 1}@array); my $index = first_index{$_ == 1}@array; print "index of the One=\[$index\]\n" if $index >-1; } =output A One is in: 5 10 14 16 17 20 25 26 38 1 42 47 54 index of the One=[9] A One is in: 5 1 index of the One=[1] A One is in: 1 2342 index of the One=[0] =cut __DATA__ 5 10 14 16 17 20 25 26 38 1 42 47 54 5 10 14 16 17 20 25 26 38 42 47 54 5 1 4 10 1 2342 34 55