#!/usr/bin/perl use strict; use warnings; my $INTERRUPT_MESSAGE = "caught sig int user interrupt"; $SIG{'INT'} = sub { die $INTERRUPT_MESSAGE }; my $login = new CQLogin(); my $username = eval { $login->autoLogon() }; if ( !defined $username && $@ ) { print STDERR "wow, we got a signal\n\n"; #just for demo purpose die $@ unless $@ eq $INTERRUPT_MESSAGE; } print "Success, our username is [$username]\n\n"; #note, username will be undef if the user interrupted. package CQLogin; sub new { my $class = shift; return bless {}, $class; } sub autoLogon { my $self = shift; chomp( my $username = ); return $username; }