It could be interesting to know how you are sending "Ctrl+C". Also, I can't figure how you came that Ctrl+C is the same as '\x03'.
If you 'open' a shell process and send '\x03' it won't be interpreted as Ctrl+C but as chr(3):
$ perl -e 'open F, "|cat>test" or die("cant open"); print F "\x03"; cl
+ose F'
$ hexdump -C test
00000000 03 |.|
00000001
However If you mean
pressing 'Ctrl+C' the shell will send a signal (nothing to do with values) that you can trap as
Athanasius said before.
$ perl -e '$SIG{INT} = sub { die "Got signal" }; while() {};'
[Press CTRL+C]
Got signal at -e line 1.