in reply to Re^3: Get EXE VersionInfo
in thread Get EXE VersionInfo

Thank you to help me, i find the first problem, variable $ts not declared, copy and past change the code to $t"+"s not $ts.

But now, the program return only values to diferent version files. see:

avaserver:~/teste-rnt # ./exetime.pl V190820081243.exe -> ( Version 1.0.11 )
T190820081243.exe : Fri Jun 19 19:22:17 1992

javaserver:~/teste-rnt # ./exetime.pl V300720081251.exe -> ( Version 1.0.12 )
T300720081251.exe : Fri Jun 19 19:22:17 1992

The code:

#!/usr/bin/perl -slw
use strict;

open EXE, '<:raw', $ARGV[0] or die "$ARGV[0] : $!";
my $dos = do{ local $/ = \65536; <EXE> };
die "$ARGV[0] is not a .exe or .dll (sig='${ \substr $dos, 0, 2 }')"
    unless substr( $dos, 0, 2 ) eq 'MZ';

my $coffoff = 8+ unpack 'x60 V', $dos;
read( EXE, $dos, $coffoff - 65536 + 4, 65536 ) or die $! 
    if $coffoff > 65536;

my $ts = unpack "x$coffoff V", $dos;

print "$ARGV[0] : ", defined $ts
    ? ( scalar( localtime $ts) || "has unfathomable timestamp value $ts" )
    : 'has no timestamp';