Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

269
Vistas
¿Cómo cambio la expresión regular de perl para el formato de código?

Estoy tratando de entender el siguiente código. Pero no lo estoy entendiendo. Básicamente, el siguiente código actualmente verifica si existe una condición en el archivo ac o cpp.

 if ($perl_version_ok && $line =~ /^\+(.*)\b($Constant|[A-Z_][A-Z0-9_]*)\s*($Compare)\s*($LvalOrFunc)/) { # Throw error }

donde Constant es cualquier macro o cualquier valor constante; LvalOrFunc es cualquier variable o llamada de función; Comparar son las operaciones como !=, == ,&& , etc.

El if busca códigos como este if(CONST_VALUE == x) , donde CONST_VALUE son algunas macros. En este caso es verdadero y va dentro de la condición.

Pero quiero verificar lo contrario if(x == CONST_VALUE ) y luego arrojar un error.

Ayúdenos a comprender este fragmento de línea y cómo lograr el resultado deseado.

Nota: El código es del directorio del kernel de Linux, disponible aquí: https://github.com/torvalds/linux/blob/master/scripts/checkpatch.pl

Número de línea del código: 5483

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El código no verifica if(CONST_VALUE == x) . Como se muestra en los comentarios sobre la línea en el código fuente

 # comparisons with a constant or upper case identifier on the left # avoid cases like "foo + BAR < baz" # only fix matches surrounded by parentheses to avoid incorrect # conversions like "FOO < baz() + 5" being "misfixed" to "baz() > FOO + 5"

busca un signo más seguido de un CONSTANT_VALUE == x . El \+ en la expresión regular coincide con un signo más.

 $line =~ /^\+(.*)\b($Constant|[A-Z_][A-Z0-9_]*)\s*($Compare)\s*($LvalOrFunc)/ ^ ^ ^ ^ ^ | | | | | binding | | | word operator | | | boundary start | | of string | | plus | anything

Revertir los valores comparados debería ser fácil:

 ($LvalOrFunc)\s*($Compare)\s*($Constant|[A-Z_][A-Z0-9_]*)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda