in reply to Can we do without auxiliary variable here?

What do you want from the following?

prefix_print("A\nB"); prefix_print("C\n");

Update: I might do something like the following:

use strict; use warnings; my $prefix = 'P'; { my $first = 1; sub prefix_print { print $prefix if($first); print map { join($prefix, split(/^/,$_,-1)); } @_; $first = $_[-1] =~ m/\n$/; } } prefix_print("A\nB","C\n"); prefix_print("A\nB"); prefix_print("C\n");

Which gives:

PA PBC PA PBC

Update 2: then, after receiving the inevitable bug report, I might try:

use strict; use warnings; my $prefix = 'P'; { my $first = 1; sub prefix_print { do { print $prefix if($first); $first = ($_ =~ m/\n$/); print join($prefix, split(/^/,$_,-1)); } foreach @_; } } prefix_print(''); prefix_print("y"); prefix_print("A\nB","C\n"); prefix_print("A\nB"); prefix_print("C\n"); prefix_print("X","Y","Z","\n","A","B","C"); prefix_print("\n"); prefix_print("\n"); prefix_print(''); prefix_print(); prefix_print("the end\n");

Which gives:

PyA PBC PA PBC PXYZ PABC P Pthe end

Replies are listed 'Best First'.
Re^2: Can we do without auxiliary variable here?
by ikegami (Patriarch) on Feb 28, 2011 at 18:02 UTC
    Good catch. I imagine a "\n" would need to be added.