/ / पर्ल में, मैं कई चरों को कैसे खोल सकता हूं? - पर्ल, अनपॅक

पर्ल में, मैं कई चरों को कैसे खोल सकता हूं? - पर्ल, अनपॅक

मेरे पास एक संरचना है जिसमें निम्न शामिल हैं:

struct mystruct{
int                id[10];
char               text[40];
unsigned short int len;
};

और मैं इसे एक पंक्ति में अनपैक करने की कोशिश कर रहा हूं, ऐसा कुछ:

  my(@ids,$text,$length) = unpack("N10C40n",$buff) ;

लेकिन सब कुछ पहली सरणी (@ids) पर जा रहा है, मैंने टेम्पलेट्स को "N10 C40 n" तथा "(N10)(C40)(n)" तो, या तो यह "टी नहीं किया जा सकता है या मैं उचित टेम्पलेट स्ट्रिंग का उपयोग नहीं कर रहा हूं।

नोट: मैं "बड़े एंडियन डेटा का उपयोग कर रहा हूँ।

कोई संकेत?

उत्तर:

उत्तर № 1 के लिए 7

सूची असाइनमेंट में पहली सरणी या हैश सब कुछ खाएगा (यह कैसे पता चलेगा कि कहां रुकना है?)। इसके बजाए इसे आजमाएं:

my @unpacked        = unpack "N10Z40n", $buff;
my @ids             = @unpacked[0 .. 9];
my ($text, $length) = @unpacked[10, 11];

आप यह भी कह सकते हैं

my @ids;
(@ids[0 .. 9], my ($text, $length)) = unpack "N10Z40n", $buff;

उत्तर № 2 के लिए 1

अगर आदेश @ids कोई फरक नहीं पडता:

my ($length, $text, @ids) = reverse unpack("N10C40n",$buff) ;