]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
A refreshed synopsis
authorVincent Pit <vince@profvince.com>
Sun, 22 Feb 2009 08:24:48 +0000 (09:24 +0100)
committerVincent Pit <vince@profvince.com>
Sun, 22 Feb 2009 08:24:48 +0000 (09:24 +0100)
MANIFEST
lib/Variable/Magic.pm
samples/synopsis.pl [new file with mode: 0644]

index e7cc346caf08ea7a62c63914f4358d29d693b1ba..0f644347c3864c625a7f4342b80e681cd1197d06 100644 (file)
--- 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
index 7b4034c5b2a00892e4ffc0b1515c6cb12e9f4656..ac1f80676074026591be2e87afd3f54e0dad5006 100644 (file)
@@ -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 (file)
index 0000000..c2576be
--- /dev/null
@@ -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"
+}