----- Original Message ----- From: "Harry Putnam" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, June 16, 2003 11:47 PM Subject: Capture a printing function into an array
> > My script has a function that I want to just print its output in some > circumstances but in others I need to capture its output into an > array for further processing: > > sub strip_to_bone { > if(/[Ss]ource/ && /[Dd]estination/){ > ($line = $line) =~ s/[Ss]ource/Src/g; I am a newbie as well but this line makes no sence to me why do you have ($line = $line) ??? > ($line = $line) =~ s/[Dd]estination/Dst/g; same for this line > $line =~ s/(^[^ ]+, )([0-9][^ ]+ [0-9][^ ]+)(.*)(Src[^ ]+ [0-9]+)(.*)(Dst[^ ]+ [0-9]+)/$2 $4 $6/; > $line = ''; > printf " %s %s %-28s %s\n", "<$.>", "$2", "$4", "$6"; Here you dont need to quote your variables printf " %s %s %-28s %s\n", <$.>, $2, $4, $6; BTW why are you doing <$.> ?? > } > } > > I've tried various renditions of sprintf and eval but my syntax is > still allowing the function to print to standard out. > > What is the correct way to do this so that the functions' output goes into > an array (simplified below): > > if ($opt_l){ > @c = sprintf(my_func()); sprintf will return a scalar, if you want an array you need to split @c = split "",sprintf(my_func()); > # @c = eval my_func(); > for (@c){ > print "Got it => $_\n"; > } > } > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > hTh, Mark G -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]