This is my first foray into closures and callbacks and I just wanted some reassurance that the code is working as well as it seems to be, i.e. it produces the expected results but I just want to make sure that I'm doing it the "right way":
#!/usr/perl/bin/perl -w use strict; my @indexes = qw (3 0 4 5 6 7); open INDATA,"<my.dat" or die "my.dat: $!"; sub read_row { my $row = <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;
and the data:
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
and the results:
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
(I'm using 5.00503 hence the bareword filehandles).

Any comments welcome and appreciated.

rdfield


In reply to Closures and callbacks... by rdfield

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.