On Mon, Oct 01, 2001 at 07:46:24PM +0530, [EMAIL PROTECTED] wrote:
> Instead of this behaviour of eval, Can I get what I want .i.e.. Can I
> capture the output in some variable. Like here I am printing "hi" on
> stdout. But I want this "hi" to be stored in some variable also.

So you want to store what you print in a variable, as well as print it out,
and you think eval is the answer?  It isn't.

The simplest answer is: store what you're printing in a variable, then print
it.

    my $stuff_to_print = "hi";
    print $stuff_to_print;

Now you have a variable, $stuff_to_print, with a value of "hi", and you've
printed it out.


You could also make your own print function that appends to the variable of
your choice:

    sub append_and_print (\$@) {
        my($var_ref, @stuff_to_print) = @_;

        $$var_ref  = '' unless defined($$var_ref);
        my $sep = defined($,) ? $, : "";
        $$var_ref .= join($sep, @stuff_to_print);

        print @stuff_to_print;
    }

    append_and_print($stuff_to_print, "hi");

Now $stuff_to_print has the value "hi", and it's been printed.


You could also setup a tied handle, one that appends to a variable on each
print.  The implementation is a little more complex, so I've omitted it.


The bottom line is, what are you trying to accomplish with this?


Michael
--
Administrator                      www.shoebox.net
Programmer, System Administrator   www.gallanttech.com
--

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to