← Back to Perl Course | Chapter 8: Modules | Lesson 4 of 7

Scalar::Util का उपयोग

Scalar::Util छोटे checks offer करता है जैसे क्या एक value एक number है, एक object है, या एक reference।

In this page:

  1. Scalar::Util

Scalar::Util

looks_like_number बताता है कि Perl एक string को एक number की तरह treat करेगा या नहीं, जो एक regular expression से guess करने से safer है। blessed एक object का class name return करता है या किसी और चीज़ के लिए undef, और reftype एक reference का underlying type return करता है भले ही यह blessed हो। weaken एक reference को एक weak वाले में बदल देता है जो इसके target को alive नहीं रखता, जो reference cycles तोड़ने के लिए इस्तेमाल होता है।

Note: एक value पर methods call करने से पहले यह check करने का safe तरीका है कि यह एक object है blessed($x)।

उदाहरण: Scalar::Util

perl
use strict;
use warnings;
use Scalar::Util qw(looks_like_number blessed reftype weaken);

for my $v ("42", "3.14", "1e5", "abc", "", "0x10") {
    printf "%-6s %s\n", "'$v'", looks_like_number($v) ? "number" : "not a number";
}

my $obj = bless { id => 1 }, 'Widget';
print "blessed: ", blessed($obj), "\n";
print "blessed of plain hashref: ", defined blessed({}) ? "class" : "undef", "\n";
print "ref: ", ref($obj), " reftype: ", reftype($obj), "\n";

my $parent = { name => "parent" };
my $child  = { name => "child", parent => $parent };
$parent->{child} = $child;
weaken($child->{parent});
print "child's parent: $child->{parent}{name}\n";

# Output:
# '42'   number
# '3.14' number
# '1e5'  number
# 'abc'  not a number
# ''     not a number
# '0x10' not a number
# blessed: Widget
# blessed of plain hashref: undef
# ref: Widget reftype: HASH
# child's parent: parent
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. objects detect करने के लिए ref इस्तेमाल करना जब reference एक plain वाला हो सकता है
  2. यह भूल जाना कि looks_like_number 1e5 और 0 जैसी values accept करता है लेकिन 0x10 जैसी hex strings नहीं
  3. एक side weaken किए बिना circular references बनाना
चैप्टर सारांश
  • looks_like_number numeric strings validate करता है
  • blessed एक object की class return करता है
  • reftype blessing ignore करता है
  • weaken reference cycles तोड़ता है
🔒

Chapter Quiz — Complete all 7 topics to unlock

0/7 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.