#! perl -slw use strict; sub permute { my( $in, $pre ) = ( @_, '' ); if( not length $in ) { print $pre; } else { for my $i ( 0 .. length( $in ) - 1 ) { permute( substr( $in, 0, $i ) . substr( $in, $i+1 ), $pre . substr( $in, $i, 1 ) ); } } } permute( '12345' );;