in reply to Is there an array for $1,$2,$3... or some alternative ?

It looks like you need something like this:

$ perl -le'my $fromUserNumber = shift; $_ = " a b c d "; /(.) (.) (.) +(.)/ and print substr $_, $-[$fromUserNumber], $+[$fromUserNumber] - +$-[$fromUserNumber]' 2 b $ perl -le'my $fromUserNumber = shift; $_ = " a b c d "; /(.) (.) (.) +(.)/ and print substr $_, $-[$fromUserNumber], $+[$fromUserNumber] - +$-[$fromUserNumber]' 3 c