Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Output to file question

by dannyp (Novice)
on Jul 21, 2004 at 22:39 UTC ( #376398=perlquestion: print w/replies, xml ) Need Help??

dannyp has asked for the wisdom of the Perl Monks concerning the following question:

Can some one tell me how to output what is in a variable to a file.
I have the variable $mac. Im on a unix machine. How do I get what is in $mac to save to a file on the unix box. Thanks

Replies are listed 'Best First'.
Re: Output to file question
by ysth (Canon) on Jul 21, 2004 at 22:48 UTC
    One way:
    use File::Slurp "write_file"; write_file("filename", $mac) or die "Error writing to file: $!";
    or, more traditionally,
    open my $handle, "> filename" or die "Couldn't open file: $!"; print $handle $mac; close $handle;
    (Ideally, you should check if the print and close fail also; this is commonly overlooked.)
Re: Output to file question
by swkronenfeld (Hermit) on Jul 21, 2004 at 23:35 UTC
    I just want to mention, since it sounds like you are a beginner in Perl, that the method given by ysth will overwrite the contents of your file. If you want to append to a file, you need to open the file as

    open my $handle, ">> filename" or die "Couldn't open file: $!";

    Note the ">>" instead of ">".

    You can print anything else to the file using

    print $handle "Hello, world\n"; print $handle $some_other_var;

    until the close command is executed on $handle.
Am I the only one in love with IO::All?
by Your Mother (Archbishop) on Jul 22, 2004 at 08:32 UTC

    There's also IO::All but you can check comprehension at the door. It's perl voodoo. Here's how to write it once to a file:

    use IO::All; $mac > io('/path/to/file.txt');

    Or append it:

    use IO::All; $mac >> io('/path/to/file.txt');
Re: Output to file question
by beable (Friar) on Jul 22, 2004 at 01:29 UTC
    Here's another way, using the Tie::File module:
    #!/usr/bin/perl use strict; use warnings; use Tie::File; my $mac = "this is the variable to be written to a file"; # tie array to output file tie my @array, 'Tie::File', "outputfile.txt" or die "can't open file: +$!"; # write $mac to file push @array, $mac; # all finished untie @array; __END__

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://376398]
Approved by ysth
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2022-09-27 11:27 GMT
Find Nodes?
    Voting Booth?
    I prefer my indexes to start at:

    Results (119 votes). Check out past polls.