#!/usr/perl/bin/perl -w use strict; my @indexes = qw (3 0 4 5 6 7); open INDATA,"; return unless defined($row); return (split(/\s+/,$row))[@indexes]; } test::process(\&read_row); close INDATA; package test; sub process { my $callback = shift; while (my @row = &$callback) { print "test : " . join(",",@row) . "\n"; } } 1; #### c1 ct1 p2 d1 12 15 21 91 c1 ct2 p2 d3 15 25 23 93 c1 ct3 p1 d1 13 15 21 93 c1 ct1 p1 d2 12 15 21 92 c1 ct2 p3 d1 11 25 24 92 c2 ct3 p3 d3 12 15 21 96 c2 ct1 p3 d1 16 35 22 92 c2 ct2 p1 d2 12 15 21 99 c2 ct3 p1 d1 12 05 23 91 c2 ct1 p2 d2 99 15 21 93 c2 ct2 p1 d1 12 25 24 99 #### test : d1,c1,12,15,21,91 test : d3,c1,15,25,23,93 test : d1,c1,13,15,21,93 test : d2,c1,12,15,21,92 test : d1,c1,11,25,24,92 test : d3,c2,12,15,21,96 test : d1,c2,16,35,22,92 test : d2,c2,12,15,21,99 test : d1,c2,12,05,23,91 test : d2,c2,99,15,21,93 test : d1,c2,12,25,24,99