नीचे दिए गए कोड के साथ क्या गलत है? जब चलाने के लिए, मैं: "संयोजन या स्ट्रिंग में अप्रारंभीकृत मूल्य का प्रयोग ./main.pl लाइन 14 पर (।)"मूस डिफ़ॉल्ट मानों के अंदर localtime का उपयोग कर
#!/usr/bin/perl
package Test;
use Moose;
has 'message' => (isa => 'HashRef', is => 'ro', default => sub{{(localtime)[2] => {(localtime)[3] => "hello"}}});
# the one below works fine
#has 'message' => (isa => 'HashRef', is => 'ro', default => sub{{"18" => {"16" => "hello"}}});
sub show {
my $self = shift;
print("Test: " . $self->message->{(localtime)[2]}->{(localtime)[3]} . "\n");
}
my $o = Test->new();
$o->show();
मैं स्थानीयसमय (उपयोग नहीं करते हैं) तो यह ठीक काम करता है। इसके अलावा लोकलटाइम [2] और [3] अक्सर नहीं बदलते हैं (2 घंटे, 3 महीने का दिन है) तो समस्या यह नहीं है। अगर मैं एक डिबगर के साथ स्क्रिप्ट चलाने, मैं मिलता है:
x $self
0 Test=HASH(0x3597300)
'message' => HASH(0x3597618)
16 => 'hello'
तो यह है कि मैं 'खो' अविवेक से एक स्तर लग रहा है, वास्तव में यकीन नहीं क्यों ... किसी भी विचार?
वर्क्स ठीक है, धन्यवाद – mbonnin
बस मेरी समझ के लिए: क्या बाहरी {} इस मामले में के रूप में पार्स करता है? क्या यह सिर्फ अनदेखा है? – mbonnin
ठीक है, समझ गया, यह प्रश्न इसका उत्तर देता है: http://stackoverflow.com/questions/1617546/whats-the-history-of-the-in-front-of-a-hashref-that-disambiguates-from-a- कोड फिर से धन्यवाद। – mbonnin