שאלה בperl

alexrait1

New member
שאלה בperl

אני די חדש (וחלש) בתכנות בperl, אבל ניסיתי לעשות משהו דומה לhash שבו כל ערך הוא מערך. אני רוצה גם לעדכן אותו בפשטות וגם לקרוא ממנו. my %myhash = (); ddd $myhash{1}=("a","b"); ddd my ($v1,$v2)=$myhash{1}; ddd printf "$v1 $v2"; ddd גם אם אני מחליף את שתי השורות האחרונות ב my $str=$myhash{1}; ddd printf ($str[0],$str[1]) ddd עדיין מודפס לי רק b. איפה אני טועה כאן?
 

alexrait1

New member
הדפסתי קצת לא נכון

השורה לפני אחרונה בקוד @str והשורה הראשונה my %myhash; ddd
 

eyalbd

New member
יש, בטח יש

ואפילו גם sprintf למשל
$str = sprintf "%08X", $n;​
וכו' אייל
 

voguemaster

New member
אם אני לא טועה..

כשאתה כותב:
$myhash{1};​
זה בעצם שקול ל:
$myhash{"a"}; // which returns the data associated with key "a"​
בגלל זה אתה מקבל רק b ולא שום דבר אחר. יכול להיות שאני טועה, אני לא זוכר כ"כ את הדקויות של שימוש ב-hashes. אני אבל לא מבין מה אתה רוצה לעשות. אתה יכול ע"י שימוש במפתח להשיג את המידע, ואפשר גם לאחזר מפתחות. לא הבנתי מה אתה מנסה לעשות.
 

alexrait1

New member
מה אני מנסה לעשות

בסקריפט שכתבתי, אני מנסה ליצור מין database קטן של פריטים באופן כזה: לכל פריט יש מספר סידורי (וזה המפתח של ההאש) חד ערכי. ויש נניח שני שדות quantity, name. לכל מפתח בהאש אני רוצה להתאים list שיכיל את שני השדות האלו ואז כשאצטרך לעדכן אחד מהם אני אגש בעזרת לlist, אוציא את כולו', אעדכן את השדה שאני צריך ואחזיר בחזרה להאש. הבעיה היא שבפקודה שציינתי (שהיא אינה בסריפט שלי, אלא רק לצורך הדגמה) אני לא מצליח להוצאי list שלם מתוך ההאש, אלא רק את הערך האחרון של הlist.
 
למעלה