Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: System() or the like

by cider (Acolyte)
on Sep 18, 2001 at 12:57 UTC ( [id://113069]=note: print w/replies, xml ) Need Help??


in reply to System() or the like

Yes.

I present thee with hoho_system(), it can be called with the silent option below to not additionally display output to stdout:

  • $type = hoho_system("$run", "silent");

    Or, it can also be noisy, and may be executed like so:

  • $type = hoho_system("$run");

    And for bonus points, I have included support for an optional global $logfile variable, which can be declared as the following optionally:

  • $logfile = "some_file_that_exists";

    # on with the show, cider@compulsion.org

    sub hoho_system { my ($cmd, $option) = @_; my ($returned_result); my $silent = 0; if ( defined($option) ) { if ( $option =~ m/silent/ ) { $silent = 1 +; } } if ( defined($logfile) ) { open LOG, "+>> $logfile"; print LOG "$cm +d: $_\n"; } open CMD, "$cmd |" or die "failure running $cmd: $!\n"; while(<CMD>) { print unless $silent; print LOG "$_"; $returned_result = "$_\n$returned_result"; } close CMD; if ( defined($logfile) ) { close LOG; } return $returned_result; }

    Using arrays instead of scalars in multi-line responses would be advisable, and for such you may change the $returned_result references to @returned_result, and change the $returned_result assignment line to push @returned_result, "$_";

    busunsl: switched pre tag to code tag. htmlism.

  • Replies are listed 'Best First'.
    Re: Re: System() or the like
    by busunsl (Vicar) on Sep 18, 2001 at 13:13 UTC
      Sorry to spoil that, but I think if you present a solution, it should work:

      running it gives me:

      syntax error at C:\WINNT\Profiles\int5398\src\test\xx.pl line 9, near +"if $option " syntax error at C:\WINNT\Profiles\int5398\src\test\xx.pl line 19, near + "}"
      The line while () { starts an endless loop.

      $returned_result will be empty.

      And even if it would contain something, it would be in reverse order.

      Please test your code before posting.

    Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Domain Nodelet?
    Node Status?
    node history
    Node Type: note [id://113069]
    help
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this?Last hourOther CB clients
    Other Users?
    Others avoiding work at the Monastery: (7)
    As of 2024-04-23 07:55 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found