my $nr = 25; my $n = 5-1; print "dividable by 5 :-)\n" if (1 x $nr) =~ /^(1+)\1{$n}$/; # works print "prime\n" if (1 x $nr) !~ /^(11+)\1+$/; # works (1 x $nr) !~ /^(1+)(1*)$ (?{ sq($1)}) (0) /x; # works - but not what I want ... sub sq { print "SQUARE\n" if ((length($_[0]) * length($_[0])) == $nr) ; } my $len = 'length($1)-1'; print "square2 :-)\n" if (1 x $nr) =~ /^(1+)\1{$len}$/; # this won't work print "square3 :-)\n" if (1 x $nr) =~ /^(1+)\1{length($1)-1}$/; # this won't work .. but what will?!?!?!