OK, dando a você o benefício da dúvida (que você definiu sua própria sub-rotina chamada sed
), sua instrução "Perl" é dividida da seguinte forma:
sed # A call to a subroutine called "sed"
# that you've defined ?
'/<\/data_item>/{N;/<\/data_item>$/{N;$' # A string surrounded by single quotes
! # an exclamation mark
'{s/\n//;D}}}' # another string surrounded by single quotes
$WX; # a scalar variable called "WX"
O erro de sintaxe real que você está recebendo é por causa do ponto de exclamação. Em Perl, você não pode simplesmente colocar caracteres fora de strings e fazer com que eles se concatenem com as strings adjacentes, como você pode fazer com shell.
Mesmo no shell, não tenho certeza se a linha citada funcionaria. Então, acho que você realmente precisa expandir sua pergunta original para progredir.