From: Vincent Pit Date: Sun, 22 Feb 2009 08:24:48 +0000 (+0100) Subject: A refreshed synopsis X-Git-Tag: v0.32~17 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FVariable-Magic.git;a=commitdiff_plain;h=0842790276f868200cec87bdcf6fdbbd8b23dc5e A refreshed synopsis --- diff --git a/MANIFEST b/MANIFEST index e7cc346..0f64434 100644 --- a/MANIFEST +++ b/MANIFEST @@ -7,6 +7,7 @@ README lib/Variable/Magic.pm samples/copy.pl samples/magic.pl +samples/synopsis.pl samples/uvar.pl samples/vm_vs_tie.pl t/00-load.t diff --git a/lib/Variable/Magic.pm b/lib/Variable/Magic.pm index 7b4034c..ac1f806 100644 --- a/lib/Variable/Magic.pm +++ b/lib/Variable/Magic.pm @@ -24,14 +24,29 @@ BEGIN { =head1 SYNOPSIS - use Variable::Magic qw/wizard cast dispell/; - - my $wiz = wizard set => sub { print STDERR "now set to ${$_[0]}!\n" }; - my $a = 1; - cast $a, $wiz; - $a = 2; # "now set to 2!" - dispell $a, $wiz; - $a = 3 # (nothing) + use Variable::Magic qw/wizard cast VMG_OP_INFO_NAME/; + + { # A variable tracer + my $wiz = wizard set => sub { print "now set to ${$_[0]}!\n" }, + free => sub { print "destroyed!\n" }; + + my $a = 1; + cast $a, $wiz; + $a = 2; # "now set to 2!" + } # "destroyed!" + + { # A hash with a default value + my $wiz = wizard data => sub { $_[1] }, + fetch => sub { $_[2] = $_[1] unless exists $_[0]->{$_[2]}; () }, + store => sub { print "key $_[2] stored in $_[-1]\n" }, + copy_key => 1, + op_info => VMG_OP_INFO_NAME; + + my %h = (_default => 0, apple => 2); + cast %h, $wiz, '_default'; + print $h{banana}, "\n"; # "0", because the 'banana' key doesn't exist in %h + $h{pear} = 1; # "key pear stored in helem" + } =head1 DESCRIPTION diff --git a/samples/synopsis.pl b/samples/synopsis.pl new file mode 100644 index 0000000..c2576be --- /dev/null +++ b/samples/synopsis.pl @@ -0,0 +1,28 @@ +#!perl + +use strict; +use warnings; + +use Variable::Magic qw/wizard cast VMG_OP_INFO_NAME/; + +{ + my $wiz = wizard set => sub { print "now set to ${$_[0]}!\n" }, + free => sub { print "destroyed!\n" }; + + my $a = 1; + cast $a, $wiz; + $a = 2; # "now set to 2!" +} # "destroyed!" + +{ + my $wiz = wizard data => sub { $_[1] }, + fetch => sub { $_[2] = $_[1] unless exists $_[0]->{$_[2]}; () }, + store => sub { print "key $_[2] stored in $_[-1]\n" }, + copy_key => 1, + op_info => VMG_OP_INFO_NAME; + + my %h = (_default => 0, apple => 2); + cast %h, $wiz, '_default'; + print $h{banana}, "\n"; # "0", because the 'banana' key doesn't exist in %h + $h{pear} = 1; # "key pear stored in helem" +}