Entiendo qué son Clases, Módulos y Atributos. Sin embargo no encontré información muy detallada acerca de cómo se utilizan en Perl. Tal vez pudieran echarme una mano para saber cómo poder hacerlo desde POO.
Mi código busca en una línea de archivo cierta expresión regular, que a decir verdad, funciona bastante bien en programación secuencial, sin embargo deseo pasarla a POO por superación personal y porque deseo aprender cómo funciona.
El código este:
Using perl Syntax Highlighting
- use strict;
- use warnings;
- my $a = "nuevo.txt";
- open( A, $a );
- my @L = <A>;
- my @c = qw(TRANSITO1 TRANSITO2 );
- my $m = join '|', @c;
- my $transito1
- = '(-)' . '(rw)' . '(-)' . '(rw)' . '(-)' . '(r)' . '(-)' . '(-)'
- . '(\\s+)' . '(\\d)'
- . '(\\s+)'
- . '(root)'
- . '(\\s+)'
- . '(dcms)'
- . '(\\s+)'
- . '(\\d+)'
- . '(\\s+)' . '(.)' . '(.)' . '(.)'
- . '(\\s+)' . '(\\d)' . '(\\d)'
- . '(\\s+)' . '(\\d)' . '(\\d)' . '(:)' . '(\\d)' . '(\\d)'
- . '(\\s+)' . '(.)' . '(\\d)' . '(\\d)' . '(\\d)' . '(.)' . '(\\d)' . '(\\d)' . '(\\d)' . '(\\d)' . '(\\d)' . '(\\.)'
- . '(ime$)';
- my $transito2
- = '(-)' . '(rw)' . '(-)' . '(rw)' . '(-)' . '(r)' . '(-)' . '(-)'
- . '(\\s+)'
- . '(\\d+)'
- . '(\\s+)'
- . '(tasks)'
- . '(\\s+)'
- . '(dcms)'
- . '(\\s+)'
- . '(\\d+)'
- . '(\\s+)'
- . '([a-z])'
- . '([a-z])'
- . '([a-z])'
- . '(\\s+)' . '(\\d)' . '(\\d)'
- . '(\\s+)' . '(\\d)' . '(\\d)' . '(.)' . '(\\d)' . '(\\d)'
- . '(\\s+)'
- . '((?:[a-z][a-z]*[0-9]+[a-z0-9]*))' . '(\\.)' . '(ime)';
- for ( my $i = 0; $i < @L; $i++ ) {
- my $l = $L[$i];
- $l =~ tr/[a-z]/[A-Z]/;
- $l =~ s/\x20/\x5F/g;
- $l =~ s/\x28|\x29//g;
- if ( ( $l =~ m/^[$m]/is ) && ( $l !~ m/^_|^END|\x2D/ ) ) {
- my $central = $l;
- if ( $central =~ m/***PARAMETRO QUE ENVIÉ***/ ) {
- $i++;
- $l = $L[$i];
- $l =~ tr/[A-Z]/[a-z]/;
- $l =~ s/\x28|\x29//g;
- while ( ( $l !~ m/^\n/ ) && ( $l !~ m/^[$m]/is ) && ( $i < @L ) ) {
- $l =~ s/\x5F/\x20/g;
- if ( ( $l !~ m/$gvt/ ) && ( length($l) > 2 ) && ( $l !~ m/^[$m]\n$/ ) ) {
- $l =~ tr/[a-z]/[A-Z]/;
- $l =~ s/\n//g;
- print( B "ERROR EN LA LINEA $l " );
- }
- $i++;
- $l = $L[$i];
- $l =~ tr/[A-Z]/[a-z]/;
- $l =~ s/\x20/\x5F/g;
- $l =~ s/\x28|\x29|\n//g;
- }
- }
- }
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
Básicamente lo que necesito es correr este mismo proceso con diferentes parámetros, como son $transito1, $transito2, la línea por dónde va, el array del archivo leído, y la expresión regular, para que me realice el siguiente proceso:
Using perl Syntax Highlighting
- $l =~ tr/[a-z]/[A-Z]/;
- $l =~ s/\x20/\x5F/g;
- $l =~ s/\x28|\x29//g;
- if ( ( $l =~ m/^[$m]/is ) && ( $l !~ m/^_|^END|\x2D/ ) ) {
- my $central = $l;
- if ( $central =~ m/TRANSITO1/ ) {
- $i++;
- $l = $L[$i];
- $l =~ tr/[A-Z]/[a-z]/;
- $l =~ s/\x28|\x29//g;
- while ( ( $l !~ m/^\n/ ) && ( $l !~ m/^[$m]/is ) && ( $i < @L ) ) {
- $l =~ s/\x5F/\x20/g;
- if ( ( $l !~ m/**** $transito(X) ****/ ) && ( length($l) > 2 ) && ( $l !~ m/^[$m]\n$/ ) ) {
- $l =~ tr/[a-z]/[A-Z]/;
- $l =~ s/\n//g;
- print( B "ERROR EN LA LINEA $l " );
- }
- $i++;
- $l = $L[$i];
- $l =~ tr/[A-Z]/[a-z]/;
- $l =~ s/\x20/\x5F/g;
- $l =~ s/\x28|\x29|\n//g;
- }
- }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
De antemano, gracias por el apoyo .