This should get you started. I'm not familiar with SNMP trap format so there may be edge cases, and it could likely be written better.
use warnings;
use strict;
my $data = '%CATD_I_060, SNMPTRAP: -c public 954 165.148.211.199 wblvh
+001.telkom.co.za 6 10 00:00:00 16 OID: 1.3.6.1.4.1.954.1.1.1.1.1.7557
+342 .iso.org.dod.internet.private.enterprises.954.1.1.1.1.1.7557342 V
+ALUE: I OID: 1.3.6.1.4.1.954.1.1.1.1.2.7557342 .iso.org.dod.internet.
+private.enterprises.954.1.1.1.1.2.7557342 VALUE: 7557342 OID: 1.3
+.6.1.4.1.954.1.1.1.1.3.7557342 .iso.org.dod.internet.private.enterpri
+ses.954.1.1.1.1.3.7557342 VALUE: tcenshpat1 OID: 1.3.6.1.4.
+1.954.1.1.1.1.4.7557342 .iso.org.dod.internet.private.enterprises.954
+.1.1.1.1.4.7557342 VALUE: TEST_FILE_NAME OID: 1.3.6.1
+.4.1.954.1.1.1.1.5.7557342 .iso.org.dod.internet.private.enterprises.
+954.1.1.1.1.5.7557342 VALUE: 3030303036 OID: 1.3.6.1.4.1.954.1.1.1.1.
+6.7557342 .iso.org.dod.internet.private.enterprises.954.1.1.1.1.6.755
+7342 VALUE: V OID: 1.3.6.1.4.1.954.1.1.1.1.7.7557342 .iso.org.dod.int
+ernet.private.enterprises.954.1.1.1.1.7.7557342 VALUE: Not_Noticed
+ OID: 1.3.6.1.4.1.954.1.1.1.1.8.7557342 .iso.org.dod.internet.privat
+e.enterprises.954.1.1.1.1.8.7557342 VALUE: 32303036303931303233353531
+32 OID: 1.3.6.1.4.1.954.1.1.1.1.9.7557342 .iso.org.dod.internet.priva
+te.enterprises.954.1.1.1.1.9.7557342 VALUE: OID: 1.3.6.1.4.1
+.954.1.1.1.1.10.7557342 .iso.org.dod.internet.private.enterprises.954
+.1.1.1.1.10.7557342 VALUE: OID: 1.3.6.1.4.1.954.1.1.1.
+1.11.7557342 .iso.org.dod.internet.private.enterprises.954.1.1.1.1.11
+.7557342 VALUE: CTMERRJOBNAMECTMERRTest job for unicenter OID: 1.3.6.
+1.4.1.954.1.1.1.1.12.7557342 .iso.org.dod.internet.private.enterprise
+s.954.1.1.1.1.12.7557342 VALUE: OID: 1.3.6.1.4.1.954
+.1.1.1.1.13.7557342 .iso.org.dod.internet.private.enterprises.954.1.1
+.1.1.13.7557342 VALUE: TEST_GROUP OID: 1.3.6.1.4.1.954.1.1.
+1.1.14.7557342 .iso.org.dod.internet.private.enterprises.954.1.1.1.1.
+14.7557342 VALUE: TEST_APPLICATION OID: 1.3.6.1.4.1.954.1.1.1.1.1
+5.7557342 .iso.org.dod.internet.private.enterprises.954.1.1.1.1.15.75
+57342 VALUE: TEST_JOB_NAME
+ OID: 1.3.6.1.4.1.954.1.1.1.1.16.7557342 .iso.org.dod.interne
+t.private.enterprises.954.1.1.1.1.16.7557342 VALUE: tcenshpat1';
my @matches = $data =~ m/VALUE: (.+?) OID/g;
print "$_\n" for @matches;
Output:
I
7557342
tcenshpat1
TEST_FILE_NAME
3030303036
V
Not_Noticed
3230303630393130323335353132
CTMERRJOBNAMECTMERRTest job for unicenter
TEST_GROUP
TEST_APPLICATION
TEST_JOB_NAME
I used an array to hold the matches (I hope this qualifies as a "separate variable" in your OP). See perlre for information on regular expressions. You can get the command line parameters from @ARGV (see perlvar).