#!/usr/bin/perl -w use strict; use 5.10.0; ## needed for "say" print "First, Order as written:\n"; my $str = q[new text]; $str .= sample( qw(1 2 3) ); #adds '1' to $str $str .= q[more new text]; print_now( "$str \n" ); sub sample { print q[sample(): ], @_, "\n"; } sub print_now { say @_; ## or # print $FH @_; # this an error what is $FH? } print "Now, reverse order:\n"; #################### my $delayedout; open (DELAY, '>', \$delayedout) or die "$!"; $str = q[new text]; $str .= sampleb( qw(1 2 3) ); $str .= q[more new text]; print_nowb( "$str \n" ); print $delayedout; sub sampleb { print DELAY q[sample(): ], @_, "\n"; } sub print_nowb { say @_; } __END__ PRINTS: First, Order as written: sample(): 123 new text1more new text # 1 is return value of sample # extra \n comes from say statement. Now, reverse order: new text1more new text sample(): 123