note
Aristotle
My first thought:
<code>
#!/usr/bin/perl -w
use strict;
open my $fh, '<', 'details.txt' or die $!;
until(grep !defined, my @details = map scalar <$fh>, 1 .. 4) {
print @details, "\n";
}
</code>
A C programmer's well trained reflex:
<code>
#!/usr/bin/perl -w
use strict;
open my $fh, '<', 'details.txt' or die $!;
my $i;
my @details;
while(<$fh>) {
push @details, $_;
next if ++$i % 4;
print @details, "\n";
@details = ();
}
</code>
A LISP hacker's immediate reaction:
<code>
#!/usr/bin/perl -w
use strict;
open my $fh, '<', 'details.txt' or die $!;
sub read_lines {
my ($fh, $amnt) = @_;
return unless defined(my $line = <$fh>);
return (
$line,
$amnt > 1 ? read_lines($fh, $amnt - 1) : ()
);
}
while(my @details = read_lines($fh, 4)) {
print @details, "\n";
}
</code>
<p align="right"><em>Makeshifts last the longest.</em></p>
263605
263605