Home
Search Perl pages
Subjects
By activity
Professions, Sciences, Humanities, Business, ...
User Interface
Text-based, GUI, Audio, Video, Keyboards, Mouse, Images,...
Text Strings
Conversions, tests, processing, manipulation,...
Math
Integer, Floating point, Matrix, Statistics, Boolean, ...
Processing
Algorithms, Memory, Process control, Debugging, ...
Stored Data
Data storage, Integrity, Encryption, Compression, ...
Communications
Networks, protocols, Interprocess, Remote, Client Server, ...
Hard World Timing, Calendar and Clock, Audio, Video, Printer, Controls...
File System
Management, Filtering, File & Directory access, Viewers, ...
|
|
|
Strictly speaking, nothing. Stylistically speaking, it's not a good way to
write maintainable code because backticks have a (potentially humungous)
return value, and you're ignoring it. It's may also not be very efficient,
because you have to read in all the lines of output, allocate memory for
them, and then throw it away. Too often people are lulled to writing:
`cp file file.bak`;
And now they think ``Hey, I'll just always use backticks to run programs.''
Bad idea: backticks are for capturing a program's output; the
system() function is for running programs.
Consider this line:
`cat /etc/termcap`;
You haven't assigned the output anywhere, so it just wastes memory (for a
little while). Plus you forgot to check $? to see whether the program even ran correctly. Even if you wrote
print `cat /etc/termcap`;
In most cases, this could and probably should be written as
system("cat /etc/termcap") == 0
or die "cat program failed!";
Which will get the output quickly (as its generated, instead of only at the
end ) and also check the return value.
system() also provides direct control over whether shell
wildcard processing may take place, whereas backticks do not.
Source: Perl FAQ: System Interaction Copyright: Copyright (c) 1997 Tom Christiansen and Nathan Torkington. |
Next: How can I call backticks without shell processing?
Previous: Why doesn't open() return an error when a pipe open fails?
(Corrections, notes, and links courtesy of RocketAware.com)
Up to: Current Process Control
Rapid-Links:
Search | About | Comments | Submit Path: RocketAware > Perl >
perlfaq8/What_s_wrong_with_using_backtick.htm
RocketAware.com is a service of Mib Software Copyright 2000, Forrest J. Cavalier III. All Rights Reserved. We welcome submissions and comments
|