#!/usr/bin/perl
use strict;
use warnings;
use Path::Tiny;
use autodie; # die if problem reading or writing a file
my $dir = path("/tmp"); # /tmp
my $file = $dir->child("file.txt"); # /tmp/file.txt
# Get a file_handle (IO::File object) you can write to
# with a UTF-8 encoding layer
my $file_handle = $file->openw_utf8();
my @list = ('a', 'list', 'of', 'lines');
foreach my $line ( @list ) {
# Add the line to the file
$file_handle->print($line . "\n");
}
# As above but use opena_utf8() instead of openw_utf8() my $file_handle = $file->opena_utf8();
#!/usr/bin/perl
use strict;
use warnings;
use Path::Tiny;
use autodie; # die if problem reading or writing a file
my $dir = path("/tmp"); # /tmp
my $file = $dir->child("file.txt");
# Read in the entire contents of a file
my $content = $file->slurp_utf8();
# openr_utf8() returns an IO::File object to read from
# with a UTF-8 decoding layer
my $file_handle = $file->openr_utf8();
# Read in line at a time
while( my $line = $file_handle->getline() ) {
print $line;
}
Path::Tiny makes working with directories and files clean and easy to do. Use path() to create a Path::Tiny object for any file path you want to operate on, but remember if you are calling other Perl modules you may need to convert the object to a string using 'stringify':
$file->stringify();
$dir->stringify();
autodie forces many functions to die with a useful error message (instead of returning undef) if they fail. This makes for cleaner code. To check for and catch errors use Try::Tiny.