मान लीजिए कि आपके पास एक बड़ी टीम "डेवेलूपॉप" है;) एक बड़ी टीम द्वारा। यहां संभावित आपदा का सरलीकृत मॉडल है जो तब हो सकता है जब कोई डेटा संरचना में बहुत गहराई से जांच करता है। यदि ऑटोवेफिकेशन पूरी तरह से या दायरे में अक्षम करना संभव नहीं है, तो इसके आसपास कैसे काम करें? बहुत बहुत धन्यवाद :) !!!!मैं पर्ल में ऑटोविविफिकेशन कैसे अक्षम करूं?
$VAR1 = {
'akey' => {
'deeper' => 1
}
};
Use of uninitialized value in numeric eq (==) at autovivify_test.pl line 5.
Already in a deep doot
$VAR1 = {
'deep' => {},
'akey' => {
'deeper' => 1
}
};
हाँ मैं जानता हूँ कि एक चेतावनी है, लेकिन ... बहुत देर हो चुकी हो सकता है:
use strict; use warnings;use Data::Dumper;
my $some_ref = {akey=>{deeper=>1}};
print Dumper($some_ref);
if($some_ref->{deep}{doot} == 1){
print 'too deep '.$/;
}
if($some_ref->{deep}){
print 'Already in a deep doot'.$/;
}
print Dumper($some_ref);
यह निम्न आउटपुट।
अरे दोस्तों यह कहने में मदद कर सकते हैं कि मेरे हैशफ एक बंधे हैंश संदर्भित करता है।
हो सकता है कि अगर मैं एक अच्छी FETCH विधि लागू करता हूं जो संरचना में गहराई से चेक की जांच करता है, तो मैं आसानी से अपनी समस्या का समाधान करूंगा?
मैं Tie::StrictHash, Tie::Hash और perltie को देखा। मेरी समाधान के यहाँ सरल है संस्करण:
#!/usr/bin/env perl;
#test_tie.pl
package StrictHash;
use strict; use warnings;
use Tie::Hash;
our @ISA = qw(Tie::StdHash);
use Carp;
sub TIEHASH {
my $class = shift;
my $hash = bless {@_}, $class;
return $hash;
}
##========================================================================
## FETCH fails if applied to a member that doesn't exist.
##========================================================================
sub FETCH {
my ($hash, $key) = @_;
Carp::confess "key '$key' does not exist" unless exists $hash->{$key};
return $hash->{$key};
}
##========================================================================
package main;
use strict;use warnings;use Data::Dumper;
#Imagine StrictHash is in ./StrictHash.pm
#use StrictHash;
my %hash;
tie %hash, 'StrictHash', akey => {deeper=>1} ;
my $some_ref =\%hash;
print Dumper($some_ref);
if($some_ref->{deep}{doot} == 1){
print 'too deep '.$/;
}
मैं क्या हासिल अनुप्रयोग में केवल एक ही स्थान पर स्पर्श करने के लिए है। अब सभी जगहें जैसे ($ some_ref -> {deep} {doot}) स्टैक-ट्रेस के साथ मर जाएंगी। तो मैं उन्हें आसानी से ढूंढूंगा और उन्हें सही कर दूंगा। और इस तरह के नए लेखन संभव नहीं होंगे। पर्ल भी बड़े ऐप्स के लिए अच्छा है, आपको बस और जानना होगा;)।
सभी को धन्यवाद! मुझे आशा है कि इससे दूसरों की भी मदद मिलती है।
आपका प्रश्न क्या है? –
मैं पर्ल में ऑटोविविफिकेशन कैसे अक्षम करूं? –