Primeiro caso
perl -nle 'print $_."=".eval($_)' filewithexpressions
-
-n
faz um loop sobre as linhas. -
-l
retira novas linhas de$_
, mas separa linhas de saída com novas linhas para você. -
-e
define uma expressão a ser executada. -
$_
é um marcador para "linha atual". -
.
concatena strings. -
eval()
pegará uma string e a avaliará como código, por exemplo,eval('5+8')
retorna13
.
Segundo caso
Com dois sinais de igual no arquivo, conforme observado em meu comentário à pergunta original:
perl -ne 'print eval($_)?" ":"!",$_' filewithequalities
Como antes, em geral.
-
-l
não é necessário / desejado desde que as novas linhas se cuidem neste caso. - A construção
?:
é um operador ternário . Se a expressão anterior for verdadeira, retorne um espaço em branco, caso contrário, retorne um ponto de exclamação.