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.