Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I am a verbose perl coded, but for some reason, I want to do this in a single line but can't figure it out...
use strict; my ($yr) = (localtime(time))[5]; print "Beta has expired\n" if $yr>102;
any ideas?

Replies are listed 'Best First'.
Re: Single Line Expiry
by tadman (Prior) on Oct 17, 2002 at 01:03 UTC
    You could just put it on one line:
    use strict;my$yr=(localtime(time))[5];print "Beta has expired\n" if $yr>102;
    Or you could just re-jig it and compare directly:
    print "Beta has expired\n" if ((localtime(time))[5]>102);
    Update: Something I forgot to mention is that you can just compare against a specific point in time without all that bother:
    print "Beta has expired\n" if (time() > 1034816374);
    If you want to pick a date in the future, you can convert to time_t format using Time::Local which does the reverse of localtime().
      Thanks, I had the parens a diff way and didn't think to try it this way...
Re: single liner
by sauoq (Abbot) on Oct 17, 2002 at 02:07 UTC
    perl -e 'print"Beta has expired$/"x((localtime)[5]>102)'
    -sauoq
    "My two cents aren't worth a dime.";