Subroutine invocations don't interpolate in double quoted strings (of which m// is a special kind). Either store the results from your function in a scalar and let that interpolate, or use something like /@{[ test_reg1() ]}/ instead.
And an aside, don't use the leading ampersand on subroutine calls; it does things to how the sub is called and unless you specifically have a reason to (and know why you're doing it) you should just omit it.
In reply to Re: Strange behaviour of m and $_
by Fletch
in thread Strange behaviour of m and $_
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |