#!/usr/bin/perl my($i) = 0; my(%kp) = (1 => '1', 2 => 'abc', 3 => 'def', 4 => 'ghi', 5 => 'jkl', 6 => 'mno', 7 => 'pqrs', 8 => 'tuv', 9 => 'wxyz', 0 => '0'); rec('', split(//, '4265274')); # 1945 sub rec { my($str, @rest) = @_; if (!@rest) { print $i++, ": $str\n"; } else { my($first) = shift(@rest); my(@choices) = split(//, $kp{$first}); foreach (@choices) { rec("$str$_", @rest); } } }