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

It would be a lot easier to diagnose if you posted the relevant code.

The error message means that you've attempted to use a variable $t but haven't declared it: my $t anywhere in your code. My guess is that you've made a change to the code above, and have typed $t instead of $ts somewhere, but that's pure speculation.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re^4: Get EXE VersionInfo
by Anonymous Monk on Aug 22, 2008 at 19:02 UTC
    print "$ARGV[0] : ", defined $ts ? ( scalar( localtime $ts) || "has unfathomable timestamp value $t +s" ) copy and past change de code to $t"+"s not $ts I find the problem, thanks. deadrop
Re^4: Get EXE VersionInfo
by Anonymous Monk on Aug 22, 2008 at 19:27 UTC
    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';