Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

system and backticks

by littlemonk (Sexton)
on Jun 07, 2010 at 13:38 UTC ( #843492=perlquestion: print w/replies, xml ) Need Help??
littlemonk has asked for the wisdom of the Perl Monks concerning the following question:

what is the functional difference between system() and backtics anybody plz tell me ?

Replies are listed 'Best First'.
Re: system and backticks
by moritz (Cardinal) on Jun 07, 2010 at 13:40 UTC
    What piece of difference wasn't clear to you, after reading the extensive documentation?
    Perl 6 - links to (nearly) everything that is Perl 6.
Re: system and backticks
by cdarke (Prior) on Jun 07, 2010 at 14:03 UTC
    backticks (or qx) is a form of output redirection. It enables the calling program to capture the standard output of the called program. The disadvantage of this is that the output being captured could be very large, possibly exceeding the memory allowance of the calling program, causing it to crash. A more controlled way of capturing output is to use a pipe with open.

    system does not capture any output directly, it runs the command which will inherit the parent's standard streams.
Re: system and backticks
by rjt (Deacon) on Jun 07, 2010 at 15:20 UTC

    For those that learn by example:

    my $cmd = 'echo "Hello World" && exit 2'; my $sys_result = system($cmd); print "system() returned `$sys_result'; \$? = $?\n"; my $qx_result = `$cmd`; print "qx// returned `$qx_result'; \$? = $?\n";


    Hello World System returned `512'; $? = 512 qx// returned `Hello World '; $? = 512

    In a nutshell, with system, the command's output will not be captured (note how "Hello World\n" goes to the terminal), and you get the exit status as the return value. With backticks, the command's stdout is captured, and you get that output as your return value. In both cases, the child error is available with $?.

    If you need to capture standard error, you will need to redirect it to standard output by appending 2>&1 to your command, or perhaps use the completely different IPC::Open3.

    Please review How do I post a question effectively? and feel free to ask a more specific question if none of these replies are telling you what you need to know.

Re: system and backticks
by JavaFan (Canon) on Jun 07, 2010 at 13:48 UTC
    what is the functional difference between system() and backtics
    The return value.

    For details, see the manual pages.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://843492]
Approved by marto
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2017-03-27 20:37 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (324 votes). Check out past polls.