• Publicidad

Problemas concatenando

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Problemas concatenando

Notapor Pencon » 2008-10-22 06:31 @313

¡Buenas gente! Estoy intentando concatenar dos variables utilizando el operador punto (.). Es curioso porque he estado haciendo pruebas simples y ha funcionado perfectamente (pongo el miniejemplo):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $rtb="02";
my $bsc="CAT01B2";
print"$bsc\n";
$bsc=$bsc._.RTB.$rtb;
print"$bsc\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Pero cuando lo pego a la rutina principal (sin hacer cambio alguno), me aparece el siguiente error:

Código: Seleccionar todo
Bareword "_" not allowed while "strict subs" in use at Aplicacio_v6.pl line 188.
Bareword "RTB" not allowed while "strict subs" in use at Aplicacio_v6.pl line 18
8.
Execution of Aplicacion_v6.pl aborted due to compilation errors.


¿Alguna idea?

¡Gracias de antemano perleros!
Pencon
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-05-26 12:24 @558

Publicidad

Notapor AgeValed » 2008-10-22 06:43 @321

no testado, pero hace...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $rtb="02";
my $bsc="CAT01B2";
print"$bsc\n";
$bsc=$bsc."_".RTB.$rtb;
print"$bsc\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


A ver si funciona... saludos...
AgeValed
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2008-09-19 09:35 @441

Notapor explorer » 2008-10-22 07:10 @340

El '_' se suele usar para hacer test de ficheros. Se refiere al último fichero usado en esas operaciones. Por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( -f "hola.txt" and -r _ )
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Así que, en tu caso, lo que quieres es usarlo como un carácter y no como una función. Debes meterlo dentro de la operación de concatenación. Hay varias formas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$bsc = $bsc . '_' . 'RTB' . $rtb;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$bsc = $bsc . '_RTB' . $rtb;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$bsc .= '_RTB' . $rtb;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$bsc .= "_RTB$rtb";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$bsc = "${bsc}_RTB$rtb";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Nótese en este último ejemplo el uso de las llaves, para que Perl no confunda $bsc_ con una variable nueva (el carácter '_' es válido en los nombres de variables).
Última edición por explorer el 2008-10-23 04:27 @227, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Pencon » 2008-10-23 03:11 @174

Bueno, gracias a ambos.
Efectivamente el problema residía en lo que comenta explorer. Desconocía por completo el uso de "_" en perl.

¡¡Gracias otra vez!! Funcionan todas las soluciones :D

Un saludo.
Pencon
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-05-26 12:24 @558

Notapor salva » 2008-10-23 04:46 @240

El '_' se suele usar para hacer test de ficheros. Se refiere al último fichero usado en esas operaciones ... así que, en tu caso, lo que quieres es usarlo como un carácter y no como una función.


Explorer, no es exactamente así.

Lo que le está pasando a Pencon es que en su código original no está utilizando el "use strict" y el interprete de Perl acepta _ como un bareword, igual que si hubiese utilizado cualquier otra palabra como foo o petete sin entrecomillar. _ no tiene ningún significado especial en ese contexto.

La otra rutina dentro de la cual inserta el codigo, seguramente forma parte de un script donde si se usa strict y por eso da error.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Notapor explorer » 2008-10-23 05:34 @274

Ya... lo que pasa es que intento por todos los medios de que la gente no se entere de los barewords, por lo que pueda pasar (generar código más difícil de entender, por ejemplo). :)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados