Perlfunc: file_put_contents()
PHP has a really handy function called file_put_contents()
that simplifies writing to a file. I did a quick Perl version of that function for my scripts.
sub file_put_contents {
my ($file, $data) = @_;
open(my $fh, ">", $file) or return undef;
binmode($fh, ":encoding(UTF-8)");
print $fh $data;
close($fh);
return length($data);
}
I also implemented a quick version of file_get_contents()
:
sub file_get_contents {
open(my $fh, "<", $_[0]) or return undef;
binmode($fh, ":encoding(UTF-8)");
my $array_mode = ($_[1]) || (!defined($_[1]) && wantarray);
if ($array_mode) { # Line mode
my @lines = readline($fh);
# Right trim all lines
foreach my $line (@lines) { $line =~ s/[\r\n]+$//; }
return @lines;
} else { # String mode
local $/ = undef; # Input rec separator (slurp)
return my $ret = readline($fh);
}
}