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';
}
}
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';
}
}