|
"It's sad. I always find things in the last place I look for them."
perl -e '$|--;$.=q$.$;while($i!=0){$i=(time-$^T)%60;print"\r".$.x$i}'
# -- MeaningOfLifeTheUniverseAndEverything.pm -- package MeaningOfLifeTheUniverseAndEverything; use strict; sub _create { bless \(my $_42 = 42) } sub _value { 42 } use overload '0+' => \&_value, 'nomethod' => \&_create; sub import { overload::constant integer => \&_create, float => \&_create; } sub unimport { use Carp; croak "You can't get rid of the Meaning of Life, " ."the Universe, and Everything"; } q{ 32 }; __END__ =head1 NAME MeaningOfLifeTheUniverseAndEverything =head1 SYNOPSIS use MeaningOfLifeTheUniverseAndEverything; =head1 DESCRIPTION This module replaces all other numbers with the answer to the ultimate quesiton of life, the universe and everything throughout the program it is run from. =head1 NOTE It is a fatal error to attempt to get rid of the meaning of life, the universe and everything. =head1 BUGS This module cannot turn nothing (a literal 0) into the answer. This is of course perl's fault, since anything associated with HHGTG wouldn't have such obvious faults (unless the guide gets taken over by some evil company or something like that.) =head1 SEE ALSO I<The Hitchhiker's Guide to the Galaxy>. =cut # -- test.pl -- #!/usr/bin/perl -w use strict; use MeaningOfLifeTheUniverseAndEverything; sub value { (defined $_[0]) ? $_[0] : 'undef'; } sub show { foreach my $expr (@_) { print $expr, " = ", value(eval $expr), "\n"; print "(error: $@)\n" if $@; } } show split /\n/ => <<'END'; 4.2 * 10 4.2 * 9 + 1 2 + 2 42 - 1 3 % 2 0 END
sub warningless_require_module { # * untested * use File::Spec; use Carp; my $module = shift; my @module = split /::/, $module; $module[-1] .= ".pm"; my $file; for (@INC) { $file = File::Spec->catfile($_,@module); last if -f $file; } if (!-f _) { die "Can't locate $file in \@INC (\@INC contains @INC)\n"; } my $res; { local $^W = 0; $res = do $file; } unless ($res) { die $@ if $@; croak "file didn't return a true value"; } $INC{File::Spec->catfile(@module)} = $file; { no strict 'refs'; foreach my $raw_name (keys %{$module."::"}) { my $name = $module."::".$raw_name; if (defined &{$name}) { my $sub = \&{$name}; *{$name} = sub { local $^W = 0; &$meth; }; } } } return $res; }