50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

جایگزین عملگر smartmatch در پرل نسخه جدید

سلام

دوستان من یه برنامه خیلی مهم دارم که با زبان پرل هست و یک قسمتش که با علمگر smartmatch که فک کنم اینجوری ~~ هست نوشته شده و ایراد میگیره!! چون در نسخه جدید این عملگر منقضی شده.

حالا کسی هست این تکه کد را با علمگر جدید اصلاح کنه خطا نگیره

نسخه پرلم فکنم 5.13 هست

اینم کدی که خطا میده





if ( $node->{ type } ~~ ['COUNTER', 'COUNTER32', 'COUNTER64'])  {
        $item->{ delta } = ZBX_ITEM_STORE_SPEED;
       if ($item->{ units } =~ /^s$/) {
            $item->{ units } = '/sec';
        } elsif ($item->{ units } =~ /^b$/i) {
            $item->{ units } .= 'ps';
        } else {
            $item->{ units } .= '/sec';
        }
    }




پرسیده شده در 1403/10/26 توسط

1 پاسخ

2

پرل   ، می‌توانید از عملگرهای دیگر مانند grep یا any از ماژول List::Util استفاده کنید. در اینجا یک نمونه کد اصلاح شده با استفاده از any آورده شده است :


use List::Util 'any';

if ( any { $_ eq $node->{ type } } qw(COUNTER COUNTER32 COUNTER64) ) {
    $item->{ delta } = ZBX_ITEM_STORE_SPEED;
    if ($item->{ units } =~ /^s$/) {
        $item->{ units } = '/sec';
    } elsif ($item->{ units } =~ /^b$/i) {
        $item->{ units } .= 'ps';
    } else {
        $item->{ units } .= '/sec';
    }
}


پاسخ در 1403/10/26 توسط

پاسخ شما