in reply to Re^3: RFC: Tutorial: use strict; now what!?
in thread RFC: Tutorial: use strict; now what!?

$foo = 23; $soft = 'foo'; # soft reference $hard = \$foo; # hard reference print "soft=$$soft, hard=$$hard\n";
A soft reference holds a variable's name, while a hard reference holds its memory address. When you dereference a soft reference, you search for a name in the symbol table. When you dereference a hard reference, you fetch the variable at that address.

Replies are listed 'Best First'.
Re^5: RFC: Tutorial: use strict; now what!?
by tangent (Parson) on Feb 09, 2012 at 16:52 UTC
    Thanks for explaining, I didn't know you could do that. BTW when I run that I get "soft=, hard=23"
      Are you running exactly that program? What version of Perl? This is what I get:
      $ cat foo2.pl $foo = 23; $soft = 'foo'; $hard = \$foo; print "soft=$$soft, hard=$$hard\n"; $ perl foo2.pl soft=23, hard=23 $ perl -v This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int
        I did change it slightly by adding my (couldn't help myself)
        user$ cat foo2.pl my $foo = 23; my $soft = 'foo'; # soft reference my $hard = \$foo; # hard reference print "soft=$$soft, hard=$$hard\n"; user$ perl foo2.pl soft=, hard=23 user$ perl -v This is perl 5, version 14, subversion 1 (v5.14.1) built for darwin-2level user$ cat foo3.pl $foo = 23; $soft = 'foo'; # soft reference $hard = \$foo; # hard reference print "soft=$$soft, hard=$$hard\n"; user$ perl foo3.pl soft=23, hard=23
        I think I've learnt something about 'my' too!