prefix_print("A\nB"); prefix_print("C\n"); #### 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"); #### PA PBC PA PBC #### 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"); #### PyA PBC PA PBC PXYZ PABC P Pthe end