Using Backquotes to Capture Output
With system and exec, the output of the launched command ends up wherever Perl’s standard output is going. Sometimes, it’s interesting to capture that output as a string value to perform further processing. That’s done by creating a string using backquotes instead of single or double quotes:
my $now = `date`; # grab the output of date
print "The time is now $now"; # newline already presentNormally, this date command spits out a string approximately 30 characters long to its standard output, giving the current date and time followed by a newline. When we’ve placed date between backquotes, Perl executes the date command, arranging to capture its standard output as a string value and, in this case, assigned to the $now variable.
This is similar to the Unix shell’s meaning for backquotes. However, the shell performs the additional job of ripping off the final end-of-line to make it easier to use the value as part of other things. Perl is honest; it gives the real output. To get the same result in Perl, add an additional chomp operation on the result:
chomp(my $no_newline_now = `date`);
print "A moment ago, it was $no_newline_now, I think.\n";The value beween backquotes is like the single-argument form of system[321] and is interpreted as a double-quoted string, meaning that backslash-escapes and variables are expanded appropriately.[322] For example, to fetch the Perl documentation on a list of Perl functions, we might invoke the perldoc command repeatedly, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access