http://www.perlmonks.org?node_id=153597


in reply to Re: Extreme Example of TMTOWTDI
in thread Extreme Example of TMTOWTDI

open(OUTPUT,">>${len}.words"); while(<>){ chomp($_); $len = length($_); print OUTPUT "$_\n"; } close(OUTPUT);
This doesn't do what the others do. For one, $len isn't defined before the open. Secondly, you don't have an outer loop involved to be able to re-open the files as needed.

Secondly, if you're going to use $_, then use it. Don't piddle around. If you're going to use a named variable (and I'm not saying this is bad), then name it. Otherwise, take advantage of Perl-isms.

while (<>) { chomp; my $len = length; print OUTPUT $_, $/; }
It wouldn't be nice unless I posted my own (unBenchmarked) version.
use IO::File; my %Handles; while (<>) { my $handle = $Handles{length} ||= IO::File->new(">" . length - 1); print $handle $_; } # This is unnecessary unless you're anal (like I try to be) $_->close for values %Handles;

------
We are the carpenters and bricklayers of the Information Age.

Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.