Thank you all for helping. i finally got it to work like this:
# this gets the reference to the actual data in the file
my $buffer = '';
sysseek $infile, 0x15, 0;
sysread $infile, $buffer, 0x03;
$buffer =~ s/(.)/sprintf("%x",ord($1))/eg;
# this will move the CUR to the actual data as specified from the refe
+rence and will extract it to file.
open(my $newfile, '>', "./file");
my $new;
sysseek $infile,hex($buffer), 0;
sysread $infile, $new, 0x40000;
syswrite $newfile, $new;
If you notice in the second set of sysseek, i had to hex($buffer). That solved the problem and allowed me to input "04C0" i am now extracting the data successfully.
Thanks to everyone who took their time to help me :)