http://www.perlmonks.org?node_id=888841


in reply to I got two questions, please see here:)

For both questions, I would suggest reviewing perlipc, the perl documentation on inter-process communications. The section on signal handling mentions both Ctrl-C and Ctrl-Z (from question 1), while the section "Using open() for IPC" would be a good place to start for question 2.

Hope that helps.

Update: (2011-02-17)

For reference, I believe (after a quick search) that Ctrl-C sends SIGINT (INT), and Ctrl-Z sends SIGTSTP (TSTP).

Update: (2011-02-17)

The example from the section on signal handling can be modified as follows to illustrate handling the INT and TSTP signals:

#!/usr/bin/perl use strict; use warnings; sub catch_zap { my $signame = shift; die "Somebody sent me a SIG$signame"; } $SIG{INT} = \&catch_zap; # best strategy $SIG{TSTP} = \&catch_zap; # best strategy my $t = time; $t += 30; while ( time < $t ) { print scalar localtime, qq{\n}; sleep 1; }

A modification of the second code example in the section mentioned for question two uses open() to retrieve interface IP information using the ifconfig command:

#!/usr/bin/perl use strict; use warnings; my $interface; open( CMD, "/sbin/ifconfig |" ) || die "can't fork: $!"; while (<CMD>) { if (/^(\S+)/) { $interface = $1; } next if !/(inet\d?)\s+addr:\s?(\S+)/; print $interface, q{ }, $1, q{: }, $2, qq{\n}; } close CMD || die "bad cmd: $! $?";