perl + uniq caracteres antes da variável

1

Por favor, informe

Qual é o significado dos caracteres "%%" antes da variável EOF?

  $LINE ='tail -1 $FILE ';
  chomp($LINE);
  if ($LINE eq "%%EOF") 
      {

        .
        .
        .
    
por yael 27.07.2016 / 13:13

1 resposta

3

Nenhum significado particular, eles são apenas tratados literalmente. Apenas verifica se a última linha contém exatamente %%EOF . Esse é o marcador final em documentos PostScript ou PDF (tente tail -n 1 somefile.pdf ).

perl expande as variáveis escalar ( $var ) e list ( @list ) entre aspas duplas, mas não as hashes / matrizes associativas ( %hash ).

Observe que esse código está incorreto nesse

$LINE = 'tail -1 $FILE';

deve ser:

$LINE = 'tail -n 1 -- $FILE';

ou:

$ENV{FILE} = $FILE;
$LINE = 'tail -n 1 < "\$FILE"';
#or# $LINE = qx'tail -n 1 < "$FILE"';

Você precisa de -- para garantir que o conteúdo de $FILE não seja considerado uma opção (por exemplo, se começar com - ou + ). A abordagem de redirecionamento também evitaria problemas com um arquivo chamado - (que, se passado como argumento, seria entendido por tail como significando entrada padrão em vez do arquivo chamado - no diretório atual ) mas significaria que uma shell deve ser invocada.

    
por 27.07.2016 / 13:18