• Publicidad

Declaración de variables

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

Declaración de variables

Notapor astrid5 » 2010-07-01 15:03 @668

¡¡Hola a todos!!

Tengo un problema con un programa en Perl, soy nueva en esto. Estoy utilizando un código que no está hecho por mi. El problema es que donde declara las variables my(@input,$output), según entiendo, hay que definirlas y son archivos, me dice que input es un arreglo. Entonces mi pregunta es si me pueden explicar cómo debo definir el archivo para que el programa funcione.

Gracias

P.D. Solo agregué el programa principal porque es muy largo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl -w
  2.  
  3. use strict;
  4. use DateTime;
  5. use File::Temp;
  6. use Math::Round;
  7. use Math::Complex;
  8. use Getopt::Long;
  9. use TauP::Time;
  10. use Seed::Response;
  11. use Seismogram::SAC;
  12.  
  13. our $VERSION = 1.2;
  14.  
  15. # Set your SAC path here
  16. my $sac2000 = '/usr/local/sac/bin/sac';
  17. if ( ! -e $sac2000 )
  18. {
  19.  die "Could not find SAC executable, please edit $0\n";
  20. }
  21. my(@input,$output);
  22. GetOptions('input=s{,}' => \@input, 'output=s' => \$output);
  23.  
  24. # A perl module to convert from SAC to DSN (a format used by MT5)
  25. open my $out_fp,">$output";
  26. foreach my $file (<@input>)
  27. {
  28.  my $phase = 'S';
  29.  if ( $file =~ /[SBL]HZ/ ) { $phase = 'P';}
  30.  # Decimate the data
  31.  my $decData = File::Temp->new();
  32.  decimateData($file,$decData);
  33.  # Read the decimated file
  34.  my($sac) = readSAC($decData);
  35.  my($resp) = readResponse($sac);
  36.  
  37.  my($waveform,$initialTime) = extractWaveform($sac,$phase);
  38.  my $waveformSize = (scalar @$waveform);
  39.  my($header) = createSeismogramHeader($sac,$resp,$waveform,$initialTime);
  40.  $header .= printPolesAndZeros($sac,$resp,$waveformSize);
  41.  $header .= printWaveform($waveform);
  42.  print $out_fp $header;
  43. }
  44. close $out_fp;
  45.  
  46. 0;
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
astrid5
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2010-06-16 14:59 @666

Publicidad

Re: Declaración de variables

Notapor explorer » 2010-07-01 15:30 @687

Bienvenida a los foros de Perl en Español, astrid5.

Leyendo la documentación del módulo Getopt::Long, la línea
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. GetOptions('input=s{,}' => \@input, 'output=s' => \$output);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

quiere decir que se esperan dos argumentos con nombre.

Uno de ellos, output, requiere la presencia (=) de un valor de cadena de caracteres (s), que almacenará en la variable $output.

Y otro, input, que requiere (=) uno o más valores ({,}) de cadenas de caracteres (s), que los guardará, uno a uno, dentro del array @input.

La forma de indicar esos valores se puede hacer, desde la línea de comandos, así
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
--input fichero1 --input fichero2 --input fichero3
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

o (experimental)
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
--input fichero1 fichero2 fichero3
Coloreado en 0.000 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: Declaración de variables

Notapor astrid5 » 2010-07-01 16:18 @721

¡¡¡Gracias!!!

Eres una persona muy amable, ahora ya entendí. Ya resolví este primer problema. Ahora seguiré con los demás. :lol:
astrid5
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2010-06-16 14:59 @666


Volver a Básico

¿Quién está conectado?

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

cron