First some house keeping: excellent to see you using strictures, however -w in the shebang line isn't needed because you are using use warnings. Actually -w has global effect (it applies to code outside the current file) whereas use warnings only applies to the current file and is preferred.
Next item of house keeping: use indentation to show structure. The code in your sub should be indented.
Final house keeping hint: make returned values explicit. return <<"END_MSG"; instead of <<"END_MSG";.
To figure out where white space is it helps to add "quote" characters. Try:
#!/usr/bin/perl use strict; use warnings; sub foo { my $code = shift; return <<"END_MSG"; Add the code <$code> END_MSG } my $code = <<'END_MSG'; line 1 line2 END_MSG print "before calling\n"; print $code; print "after calling\n"; print foo($code); print "why blank line above?\n";
and you will see that the contents of $code already has a trailing newline so nesting it in another HEREDOC adds the second unwanted newline. One fix is to chomp $code in the sub:
sub foo { my $code = shift; chomp $code; return <<"END_MSG"; Add the code $code END_MSG }
In reply to Re: how to prevent new line added in HERE document
by GrandFather
in thread how to prevent new line added in HERE document
by steveh44
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |