#perl #awk
#perl #awk
Вопрос:
У меня есть код в awk, подобный этому:
val = and($1, 0x03FFFFFF) $2
Я написал версию Perl следующим образом:
$val = ($1 amp;amp; 0x03FFFFFF) $2;
Являются ли эти строки одинаковыми?
Комментарии:
1. perl поставляется с a2p, который превращает awk в код Perl.
Ответ №1:
Не совсем — вы хотите amp;
, не amp;amp;
:
$val = ($1 amp; 0x03FFFFFF) $2;
Пожалуйста, обратите внимание, что вы правы в том, что круглые скобки необходимы из-за приоритета
Более подробно:
-
Ваше выражение awk использует
and()
, которое определено в главе руководства по gawk «8.1.6 Функции управления битами в gawk«, таким образом:и(v1, v2) ======= Возвращает побитовое значение И значений, предоставленных v1 и v2.
-
Следовательно, в Perl требуется побитовое «и» ; не логическое, которое согласно perldoc perlop является единственным амперсандом: «
amp;
«