Scalar::Util का उपयोग
Scalar::Util छोटे checks offer करता है जैसे क्या एक value एक number है, एक object है, या एक reference।
In this page:
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
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
Login to try C/C++/Java/PHP code in the editor
आम गलतियां
- objects detect करने के लिए ref इस्तेमाल करना जब reference एक plain वाला हो सकता है
- यह भूल जाना कि looks_like_number 1e5 और 0 जैसी values accept करता है लेकिन 0x10 जैसी hex strings नहीं
- एक 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: