Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
IPC::Open3::Simple(3) User Contributed Perl DocumentationIPC::Open3::Simple(3)

NAME
       IPC::Open3::Simple - A simple alternative to IPC::Open3

VERSION
       $Id: Simple.pm,v	1.7 2006/07/20 13:30:02	erwan Exp $

SYNOPSIS
       To run 'ls' in a	few directories	and put	the returned lines in a	list:

	   my @files;
	   my $ipc = IPC::Open3::Simple->new(out => sub	{ push @files, $_[0]; })
	   $ipc->run('ls /etc/');
	   $ipc->run('ls /home/erwan/');

       To run a	'cvs up' and do	different stuff	with what cvs writes to	stdout
       and stderr:

	   IPC::Open3::Simple->new(out => \&parse_cvs_stdout, err => \&parse_cvs_stderr)->run('cvs up');

DESCRIPTION
       IPC::Open3::Simple aims at making it very easy to start a shell
       command,	eventually feed	its stdin with some data, then retrieve	its
       stdout and stderr separately.

       When you	want to	run a shell command and	parse its stdout/stderr	or
       feed its	stdin, you often end up	using IPC::Run,	IPC::Cmd or IPC::Open3
       with your own parsing code, and end up writing more code	than you
       intended.  IPC::Open3::Simple is	about removing this overhead and
       making IPC::Open3 easier	to use.

       IPC::Open3::Simple calls	IPC::Open3 and redirects stdin,	stdout and
       stderr to some function references passed in argument to	the
       constructor.  It	does a select on the input/output filehandles returned
       by IPC::Open3 and dispatches their content to and from those functions.

INTERFACE
       my $runner = IPC::Open3::Simple->new(in => \&sub_in, out	=> \&sub_out,
       err => \&sub_err)
	   Return an object that run commands. Takes no	arguments or a hash
	   containing one or more of the keys 'in', 'out' and 'err'. The
	   values of those keys	are function references	(see method run	for
	   details).

       $runner->run(@cmds)
	   Execute the shell commands @cmds. @cmds follows the same syntax as
	   the command arguments of open3 from IPC::Open3.

	   run creates a process that executes thoses commands,	and connects
	   the process's stdin,	stdout and stderr to the functions passed in
	   the constructor:

	   If out was defined in new, every line coming	from the process's
	   stdout is passed as first argument to the function reference
	   sub_out. The	line is	chomped.

	   If err was defined, the same	applies, with lines from the process's
	   stderr being	passed to sub_err.

	   If in was defined, sub_in is	called with a filehandle as first
	   argument.  Everything written to this filehandle will be sent
	   forward to the process's stdin.  sub_in is responsible for calling
	   close() on the filehandle.

	   run returns only when the command has finished to run.

DIAGNOSTICS
       "IPC::Open3::Simple::new	expects	coderefs"
	   You called new with 'in', 'err' or 'out' arguments that are not
	   function references.

       "ERROR: failed to execute command..."
	   Open3 failed	to run the command passed in @cmds to run.

BUGS AND LIMITATIONS
       No bugs so far.

       Limitation: IPC::Open3::Simple is not designed for interactive
       interprocess communication.  Do not use it to steer the process opened
       by open3	via stdin/stdout/stderr, use fork and pipes or some
       appropriate IPC module for that.	IPC::Open3::Simple's scope is to
       easily run a command, eventually	with some stdin	input, and get its
       stdout and stderr along the way,	not to interactively communicate with
       the command.

SEE ALSO
       See IPC::Open3, IPC::Run, IPC::Cmd.

COPYRIGHT AND LICENSE
       Copyright (C) by	Erwan Lemonnier	"<erwan@cpan.org>"

       This module is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself. See	perlartistic.

perl v5.24.1			  2006-07-20		 IPC::Open3::Simple(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | INTERFACE | DIAGNOSTICS | BUGS AND LIMITATIONS | SEE ALSO | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=IPC::Open3::Simple&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help