Perl Cd Bookshelf [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Perl Cd Bookshelf [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید



11.5. Taking References to Scalars


11.5.1. Problem



You want to create and manipulate a
reference to a scalar value.

11.5.2. Solution


To create a reference to a scalar variable, use the backslash
operator:

$scalar_ref = \$scalar; # get reference to named scalar

To create a reference to an anonymous scalar value (a value that
isn't in a variable), assign to a dereferenced undefined variable:

undef $anon_scalar_ref;
$$anon_scalar_ref = 15;

This creates a reference to a constant scalar:

$anon_scalar_ref = \15;

Use ${...} to dereference:

print ${ $scalar_ref }; # dereference it
${ $scalar_ref } .= "string"; # alter referent's value

11.5.3. Discussion


If you want to create many new anonymous scalars, use a subroutine
that returns a reference to a lexical variable out of scope, as
explained in this chapter's
Introduction:

sub new_anon_scalar {
my $temp;
return \$temp;
}

Dereference a scalar reference by prefacing it with
$ to get at its contents:

$sref = new_anon_scalar( );
$$sref = 3;
print "Three = $$sref\n";
@array_of_srefs = ( new_anon_scalar( ), new_anon_scalar( ) );
${ $array[0] } = 6.02e23;
${ $array[1] } = "avocado";
print "\@array contains: ", join(", ", map { $$_ } @array ), "\n";

Notice we put braces around $array[0] and
$array[1]. If we tried to say
$$array[0], the tight binding of dereferencing
would turn it into $array->[0]. It would treat
$array as an array reference and return the
element at index zero.

Here are other examples where it is safe to omit the braces:

$var = `uptime`; # $var holds text
$vref = \$var; # $vref "points to" $var
if ($$vref =~ /load/) { } # look at $var, indirectly
chomp $$vref; # alter $var, indirectly

As mentioned in the Introduction, you may use the
ref built-in to inspect a reference for its
referent's type. Calling ref on a scalar reference
returns the string "SCALAR":

# check whether $someref contains a simple scalar reference
if (ref($someref) ne "SCALAR") {
die "Expected a scalar reference, not $someref\n";
}

11.5.4. See Also


Chapters 8 and 9 of Programming Perl and
perlref(1)



11.4. Taking References to Functions11.6. Creating Arrays of Scalar References




Copyright © 2003 O'Reilly & Associates. All rights reserved.

/ 875