Scalar::UtilSection: Perl Programmers Reference Guide (3pm)Updated: 2001-09-21 |
Scalar::UtilSection: Perl Programmers Reference Guide (3pm)Updated: 2001-09-21 |
use Scalar::Util qw(blessed dualvar isweak readonly refaddr reftype tainted weaken isvstring looks_like_number set_prototype);
By default "Scalar::Util" does not export any subroutines. The subroutines defined are
$scalar = "foo"; $class = blessed $scalar; # undef
$ref = []; $class = blessed $ref; # undef
$obj = bless [], "Foo"; $class = blessed $obj; # "Foo"
$foo = dualvar 10, "Hello";
$num = $foo + 2; # 12
$str = $foo . " world"; # Hello world
$vs = v49.46.48;
$fmt = isvstring($vs) ? "%vd" : "%s"; #true
printf($fmt,$vs);
$ref = \$foo;
$weak = isweak($ref); # false
weaken($ref);
$weak = isweak($ref); # true
$fh = openhandle(*STDIN); # \*STDIN
$fh = openhandle(\*STDIN); # \*STDIN
$fh = openhandle(*NOTOPEN); # undef
$fh = openhandle("scalar"); # undef
sub foo { readonly($_[0]) }
$readonly = foo($bar); # false
$readonly = foo(0); # true
$addr = refaddr "string"; # undef
$addr = refaddr \$var; # eg 12345678
$addr = refaddr []; # eg 23456784
$obj = bless {}, "Foo";
$addr = refaddr $obj; # eg 88123488
$type = reftype "string"; # undef
$type = reftype \$var; # SCALAR
$type = reftype []; # ARRAY
$obj = bless {}, "Foo";
$type = reftype $obj; # HASH
set_prototype \&foo, '$$';
$taint = tainted("constant"); # false
$taint = tainted($ENV{PWD}); # true if running under -T
This is useful for keeping copies of references , but you don't want to prevent the object being DESTROY-ed at its usual time.
{
my $var;
$ref = \$var;
weaken($ref); # Make $ref a weak reference
}
# $ref is now undef
Except weaken and isweak which are
Copyright (c) 1999 Tuomas J. Lukka <lukka@iki.fi>. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as perl itself.