1 votos

Cadena entre comillas sin terminar (Perl)

Estoy usando una nueva versión de Perl para ejecutar un script antiguo. Esta es mi versión perl:

 This is perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux-gnu-thread-multi (with 67 registered patches, see perl -V for more detail)
 

Estoy muy confundido acerca de esta línea en el script, que simplemente mantiene el error, aunque el programa es ejecutable. Tal vez es b / c el script fue escrito durante bastante tiempo y Perl ha hecho algún cambio de sintaxis? A continuación se muestra la línea:

 use warnings;
use strict;
if($#ARGV != 0||$ARGV[0] eq "--help"){ print STDERR "Split bed file into one file per chromosome (keeping and adjusting the header)\n\nUsage: split_bed <BED file>"; }
 

El mensaje de error es:

  1: Syntax error: Unterminated quoted string --hel_  N     N'th byte, character or field, counted from 1p
 

¿Alguien puede ayudarme a depurarlo?

0voto

steve Puntos 6

Esto no es un error de Perl. Perl hubiera dicho:

 Can't find string terminator '"' anywhere before EOF
 

Parece que el shell puede producir un error similar, sin embargo:

 echo 'x="a' | sh
sh: 2: Syntax error: Unterminated quoted string
 

¿Cómo se ejecuta el script? ¿Contiene una línea shebang? Intenta ejecutarlo con perl explícito:

  perl script.pl
 

0voto

Tian Yijun Puntos 6

Acabo de buscar la historia para mi pregunta. Desde la 5.10.0, perl tiene "Nuevo definido-u operador (//)".

https://en.wikipedia.org/wiki/Perl_5_version_history

Gracias ~

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: