I would really drop the our and typeglob usage here. I feel like it's "overkill" for what [id://tomazos] is trying to do.
The following is also an interesting solution, that is quite similar to [id://friedo]'s one, but uses prototype to move referencing backslash from main script into the function code.
#!/usr/bin/perl use strict; use warnings; sub modify (\$) { my $string_ref = $_[0]; $$string_ref =~ s/a/x/g; } my $string = 'abc'; print "before `$string'\n"; # abc modify $string; print "after `$string'\n"; # xbc
Anyway, probably it is best to leave the \ char inside the main script. In this way, it is immediately clear that you're passing a reference, and not the real scalar. In the latter case, you could be tempted to think that a return value is also expected from the modify() function, which actually is not.
In reply to Re^2: Simple Pass By Reference
by cosimo
in thread Simple Pass By Reference
by tomazos
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |