sub FetchText { # doing something like this: # $sth->fetchrow_array("SELECT id_txt, txt FROM Text"); } ($,, $\) = ("\t", "\n"); open I, ">iWords.txt" or die $!; open V, ">Vocab.txt" or die $!; while (($id, $_) = FetchText()) { $_=lc; print I $id,$word{$_}||=(print(V $_,++$w),$w) for /\b[a-z]{3,30}\b/g; } close I; close V;