Uses Lingua::EN::Syllable to see if something looks like a haiku (5 / 7 / 5, 17 total).
#!/usr/bin/perl use strict; use Lingua::EN::Syllable qw( syllable ); my( $syls, $valid ); while( <> ) { my $cur; my $should = $. % 2 ? 5 : 7; $cur += syllable( $_ ) foreach split; print "Line $. should be $should, is $cur\n"; $valid = $should == $cur; $syls += $cur; } print "Haiku is ", $valid && $syls == 17 ? '' : 'in', "valid\n";