• Publicidad

Saber si un carácter es salto de línea

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

Saber si un carácter es salto de línea

Notapor dandarc_perl » 2009-09-09 18:11 @799

Hola,
Quiero saber si hay alguna forma para saber si dado un carácter, se puede saber si es un salto de línea o un carácter común.

Saludos.
dandarc_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-08-13 17:55 @788

Publicidad

Re: Saber si un carácter es salto de línea

Notapor explorer » 2009-09-09 18:17 @804

Pues la cosa es complicada... porque depende del sistema operativo que estés usando, el significado de carácter de fin de línea es distinto.

Lo que sí puedes saber es si el carácter es uno normal. Con

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($caracter =~ /\w/) {
    print "[$caracter] es alfanumérico o '_'\n";
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Y lo mismo con '\S' que es para un carácter no-espacio en blanco (incluidos tabuladores y saltos de línea).


Más información en perlre.
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

Re: Saber si un carácter es salto de línea

Notapor creating021 » 2009-09-10 14:45 @656

Pero si se quiere saber exclusivamente eso:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( $caracter eq $\ ) {
    print "El carácter es un retorno de carro\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

O evaluar por valor, pera Windows el EOL es "\r\n", para UNIX es "\n" y para los Mac (classic) es "\r\r"; también puede evaluar el valor ASCII.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Re: Saber si un carácter es salto de línea

Notapor explorer » 2009-09-10 15:58 @707

Aclarar unas cosas...

Depende de en QUÉ Perl te encuentres, "\n" significa una cosa u otra. Mientras que siempre podemos considerar que "\r" representa el carácter retorno de carro, es peligroso pensar que "\n" sea el carácter de avance de línea.

Los finales de línea de los Mac ha sido siempre (hasta ahora): "\n" (CR == \0x0D)

En caso de querer caracteres en concreto, siempre es mejor usar la notación octal o hexadecimal.
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

Re: Saber si un carácter es salto de línea

Notapor dandarc_perl » 2009-09-11 11:37 @526

Muchas gracias Explorer, como siempre una excelente respuesta (¿hay algo que no sepas de Perl? (jeje) Agradezco también a creating021 por su aportación.

En conclusión para lo que necesito tome la respuesta de Explorer pero negándola siendo que en mi caso sé que ese carácter que voy a evaluar siempre va a ser o un carácter normal o un retorno de carro.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($caracter !~ /\w/) {
    print "[$caracter] no es alfanumérico o '_'\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos.
dandarc_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-08-13 17:55 @788

Re: Saber si un carácter es salto de línea

Notapor explorer » 2009-09-11 11:46 @532

Ya, pero un punto ('.'), una coma, un punto y coma, y muchos más caracteres no entran dentro de la categoría de alfanumérico y '_'. Y no son caracteres de retorno de carro.

Así que esa solución no te vale...

Yo me decantaría más por lo de "\n" y/o "\r\n", pero en formato octal o hexadecimal.

Una pregunta... ¿para qué necesitas saber si un carácter es retorno de carro?
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

Re: Saber si un carácter es salto de línea

Notapor dandarc_perl » 2009-09-15 17:53 @786

ok, pero no importa mucho en mi caso, porque sé que nunca voy a tener que lidiar con puntos ni puntos y comas.

Esto lo necesito saber para poder truncar registros de un archivo plano cuando el carácter en la penúltima posición del registro sea un retorno de carro, es decir, que la longitud de registro es de 122 por ejemplo, entonces yo sé que siempre va a haber un retorno de carro en la posición 123, pero si este viene en la posición 122, sería un registro no válido para lo que se requiere.

Espero haberme explicado correctamente.

Saludos
dandarc_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-08-13 17:55 @788

Re: Saber si un carácter es salto de línea

Notapor explorer » 2009-09-15 18:00 @791

¡Ah!, entonces se podría solventar de otra manera...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open my $fichero, '<fichero.txt';
while (<$fichero>) {
    print "El registro no es válido\n" if length != 123;
}
close  $fichero;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

:)
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

Re: Saber si un carácter es salto de línea

Notapor dandarc_perl » 2009-09-17 09:14 @426

Jaaaa :oops: , es cierto
dandarc_perl
Perlero nuevo
Perlero nuevo
 
Mensajes: 28
Registrado: 2008-08-13 17:55 @788


Volver a Básico

¿Quién está conectado?

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

cron