in reply to Anyone use "xor" in conditionals?
It has its uses. The conventional way of determining if a year is leapyear goes something like this code from Date::Leapyear
sub isleap { my ($year) = @_; return 1 if (( $year % 400 ) == 0 ); # 400's are leap return 0 if (( $year % 100 ) == 0 ); # Other centuries are not return 1 if (( $year % 4 ) == 0 ); # All other 4's are leap return 0; # Everything else is not }
This can also be written as
not $year % 4 xor $year % 100 xor $year % 400;
Proof :)
print $_, ((not $_ % 4 xor $_ % 100 xor $_ % 400) ? ' is ' : ' is not ', 'a leap year'), $/ for 1996, 1997, 1998, 1999, 2000, 2004, 2100; 1996 is a leap year 1997 is not a leap year 1998 is not a leap year 1999 is not a leap year 2000 is a leap year 2004 is a leap year 2100 is not a leap year
You should probably also seach for '^', but as I discovered, this is a sight more complex isolate the xor uses from all the other uses perl makes of this character.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Anyone use "xor" in conditionals?
by Abigail-II (Bishop) on Jul 14, 2003 at 07:52 UTC | |
by BrowserUk (Patriarch) on Jul 15, 2003 at 01:15 UTC | |
by dragonchild (Archbishop) on Jul 15, 2003 at 02:17 UTC | |
by BrowserUk (Patriarch) on Jul 15, 2003 at 02:30 UTC | |
by zengargoyle (Deacon) on Jul 15, 2003 at 03:36 UTC | |
| |
by Abigail-II (Bishop) on Jul 15, 2003 at 07:05 UTC | |
by BrowserUk (Patriarch) on Jul 15, 2003 at 09:31 UTC | |
|
Re: Re: Anyone use "xor" in conditionals?
by bsb (Priest) on Jul 14, 2003 at 23:32 UTC |