in reply to sub return value in qq{}
The dereferenced arrayref technique works fine: "a string @{[foo()]}\n". But it's a little magical; it requires some tribal knowledge or testing for a reader of the code to understand what is happening.
Perl also provides printf, which is well documented and should be clearer for a reader:
sub foo { return "bar" } printf "foo returns %s\n", foo();
Additionally, there are a lot of template systems available to Perl. Template::Toolkit, Text::Template, Mojo::Template, Template::Tiny, and many others. Here is an example using Template::Toolkit:
#!/usr/bin/env perl use strict; use warnings; use Template; sub foo {return "bar"} my $output; Template ->new ->process( \"foo returns [% f %]\n", {f => foo()}, \$output, ); print $output;
This code works as-is with Template::Tiny if you just replace any mention of Template with Template::Tiny.
Dave
|
|---|