पर्ल कमजोर रूप से टाइप किया गया है और संदर्भ आधारित है। आपके द्वारा उपयोग किए जाने वाले ऑपरेटरों के आधार पर कई स्केलर को स्ट्रिंग्स और संख्याओं के रूप में माना जा सकता है।
$a = 7*6; $b = 7x6; print "$a $b\n";
आपको मिलता है 42 777777
।
हालाँकि, एक सूक्ष्म अंतर है। जब आप किसी पाठ फ़ाइल से डेटा संरचना में संख्यात्मक डेटा पढ़ते हैं, और फिर इसे देखते हैं Data::Dumper
, तो आप देखेंगे कि आपके नंबर उद्धृत किए गए हैं। पर्ल उन्हें आंतरिक रूप से तार के रूप में मानता है।
पढ़ें: $my_hash{$1} = $2 if /(.+)=(.+)\n/;
।
डंप:'foo' => '42'
यदि आप डंप में निर्विवाद संख्या चाहते हैं:
पढ़ें $my_hash{$1} = $2+0 if /(.+)=(.+)\n/;
:।
डंप:'foo' => 42
$2+0
पर्ल नोटिस के बाद आपने $ 2 को एक नंबर माना है, क्योंकि आपने एक संख्यात्मक ऑपरेटर का उपयोग किया है।
मैंने दो हैश की तुलना करने की कोशिश करते हुए इस पर ध्यान दिया Data::Dumper
।