Kiloko escribiste::? tienes razón siempre salgo con nuevas cosas.
Bueno, ese no es el problema. El problema es que si te damos una solución para una determinada pregunta, quizás no sirva para nada porque la siguiente cuestión o problema es tan determinante que es necesario replantear todo el asunto desde el principio. Pero eso también es bueno, porque así ves lo fácil o difícil que es programar.
Kiloko escribiste:Por cierto, recomiendame algún tutorial o dame algún norte de qué es lo que debo buscar
En
este mensaje tienes todos los enlaces necesarios.
Kiloko escribiste:porque estoy haciendo varias comparaciones y extrayendo datos, digamos if {} y de estos yo saco un resultado $X y quiero guardar este resultado para utilizarlo posteriormente, pero como cerré las comillas ya no puedo, y si las dejo abiertas pues se sobre corre el proceso.
Esto no lo entiendo...
Si quieres guardar resultados intermedios, guárdalos en otras variables, con otros nombres.
Kiloko escribiste:¿Cómo se podría utilizar? De igual forma, si quiero hacer sub procesos, ¿cómo mandarlos llamar?
Si es un proceso externo, se puede llamar con
do{} (si está escrito en Perl), con
qx(), o con
system().
Kiloko escribiste:Y si me podrías explicar la última línea
Using perl Syntax Highlighting
$linea =~ s/.*?((?:=\d+){1,7})$/$1/Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
De la
$linea buscamos de entre 1 a 7 conjuntos de '
=' seguido de dígitos (
\d) que estén hacia el final (
$) de esa
$linea. Todo eso lo capturamos con los paréntesis de captura, que queda almacenado en
$1, que es al final con lo que nos quedamos. Lo que hay delante de ese texto (
.*?), se pierde.
Dicho de otra manera: nos quedamos con los últimos (
$) 7 conjuntos de '
=' con dígitos. Lo que hay delante, se pierde.
A propósito, aquí entonces hay un error. Decías que la línea es de la forma
- Código: Seleccionar todo
12-10-2007=30=34=12=14=43=15=32
Si usamos la anterior expresión regular, borrará todo lo que hay delante, incluso la fecha que hay al principio de la línea.
Si, suponemos, que esa primera parte, es una fecha, y por lo tanto, nunca va a aparecer el caracter '
=' dentro de ella, la siguiente expresión regular nos permitirá realizar el corte manteniendo la fecha original:
Using perl Syntax Highlighting
$linea = '12-10-2007=30=34=12=14=43=15=32';
$Valor = 40;
$linea .= "=$Valor";
$linea =~ s/([^=]+).*?((?:=\d+){1,7})$/$1$2/; # 12-10-2007=34=12=14=43=15=32=40Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
que quiere decir: El primer par de paréntesis se queda con todo (
+) aquello que no (
^) sea un '
='. Luego viene una parte que no nos interesa (
.*?) y luego el segundo par de paréntesis son hasta 7 conjuntos de '
=' con dígitos. Todo este rollo lo sustituimos por el primer (
$1) y el segundo (
$2) par de paréntesis capturados antes.
Kiloko escribiste:Y ¿cómo busco el tema para ese tipo de comandos?, ¿en que sección o temas de Perl caería?
Esto último es una de las partes más importantes de Perl: las expresiones regulares. En la documentación estándar de Perl están en los documentos
perlre. En los tutoriales (alguno de ellos en esta misma web) en Español también hay abundante información. Incluso Wikipedia tiene
un artículo al respecto.