=over =item $OLD_PERL_VERSION =item $] X<$]> X<$OLD_PERL_VERSION> The revision, version, and subversion of the Perl interpreter, represented as a decimal of the form 5.XXXYYY, where XXX is the version / 1e3 and YYY is the subversion / 1e6. For example, Perl v5.10.1 would be "5.010001". This variable can be used to determine whether the Perl interpreter executing a script is in the right range of versions: warn "No PerlIO!\n" if "$]" < 5.008; When comparing C<$]>, numeric comparison operators should be used, but the variable should be stringified first to avoid issues where its original numeric value is inaccurate. See also the documentation of L|perlfunc/use VERSION> and C for a convenient way to fail if the running Perl interpreter is too old. See L for a representation of the Perl version as a L object, which allows more flexible string comparisons. The main advantage of C<$]> over C<$^V> is that it works the same on any version of Perl. The disadvantages are that it can't easily be compared to versions in other formats (e.g. literal v-strings, "v1.2.3" or version objects) and numeric comparisons are subject to the binary floating point representation; it's good for numeric literal version checks and bad for comparing to a variable that hasn't been sanity-checked. The C<$OLD_PERL_VERSION> form was added in Perl v5.20.0 for historical reasons but its use is discouraged. (If your reason to use C<$]> is to run code on old perls then referring to it as C<$OLD_PERL_VERSION> would be self-defeating.) Mnemonic: Is this version of perl in the right bracket? =back