title: Can't get system command to timeout in perl script
body: <p>I browsed around and read a few other questions about getting a command to stop running after a period of time but everything i tried doesn't work.</p>
  
  <p>The command will act like it wants to stop after the specified amount of time (It returns the terminal prompt for a brief second) but just keeps going and wont stop.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>#!/usr/bin/perl
  
  use strict;
  use warnings;
  
  
  use Try::Tiny;
  
  try {
          local $SIG{ALRM} = sub { die "alarm\n" };
          alarm 5;
          system("ping 192.168.1.1");
          alarm 0;
  }
  catch {
          die $_ unless $_ eq "alarm\n";
          print "timed out\n";
  };
  exit;
  </code></pre>
  
  <p>The output in the terminal looks like this:</p>
  
  <pre><code>PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
  64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.98 ms
  64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=3.13 ms
  64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=3.20 ms
  64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=3.17 ms
  64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=3.16 ms
  64 bytes from 192.168.1.1: icmp_seq=6 ttl=64 time=3.11 ms
  64 bytes from 192.168.1.1: icmp_seq=7 ttl=64 time=3.18 ms
  64 bytes from 192.168.1.1: icmp_seq=8 ttl=64 time=3.20 ms
  64 bytes from 192.168.1.1: icmp_seq=9 ttl=64 time=3.22 ms
  64 bytes from 192.168.1.1: icmp_seq=10 ttl=64 time=3.20 ms
  skilo@hp-xubuntu:~/perlstuff$ 64 bytes from 192.168.1.1: icmp_seq=11 ttl=64 time=3.06 ms
  64 bytes from 192.168.1.1: icmp_seq=12 ttl=64 time=3.19 ms
  64 bytes from 192.168.1.1: icmp_seq=13 ttl=64 time=3.21 ms
  64 bytes from 192.168.1.1: icmp_seq=14 ttl=64 time=3.21 ms
  </code></pre>
  
  <p>Notice how it tries to stop but can't.</p>