He empezado a trabajar hace poco con Perl, CGI, etc... y ando un poco perdido.
Mi problema es el siguiente: he creado un pequeño formulario para que la gente introduzca un texto, y dicho texto lo quiero traducir llamando a un programa de Perl que lo tengo guardado en /lib/cgi-bin/ que se conecta a Google y utilizando las API de Google Translate me devuelva el resultado.
El formulario es el siguiente (sencillito) y lo tengo guardado en var/www:
Using html4strict Syntax Highlighting
- <FORM method=post action="cgi-bin/ApiPerl.pl">
- Traductor WEB
- <TABLE BORDER=0>
- <TR>
- <TD>Introduzca texto a traducir</TD>
- <TD>
- <TEXTAREA rows="3" input name="textointroducido">
- </TEXTAREA>
- </TD>
- </TR>
- <TR>
- <TD COLSPAN=2>
- <INPUT name="traducir" type="submit" value="traducir">
- </TD>
- </TR>
- </TABLE>
- </FORM>
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
El programa Perl al que se llama es el siguiente:
Using perl Syntax Highlighting
- #!/usr/bin/perl
- use REST::Client;
- use JSON;
- use HTML::Entities qw(decode_entities);
- while (1)
- {
- print "Please enter English word: ";
- chop ( $_ = <STDIN>);
- my $client = REST::Client->new();
- $client->GET("https://www.googleapis.com/language/translate/v2?key=AIzaSyACJybEm6lyelnYHZzXfydtk-V6-Uz48bQ&en&target=fr&q=$_");
- $response = $client->responseContent();
- $json_text = from_json( $response );
- foreach my $french(@{$json_text->{data}->{translations}})
- {
- my %ep_hash = ();
- $ep_hash{translatedText} = "Translated to French: $french->{translatedText}";
- # print french
- while (my($key, $value) = each (%ep_hash))
- {
- print decode_entities($value);
- }
- }
- print "\n";
- }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Pero este programa está diseñado para que el texto se introduzca por la entrada estándar y yo lo quiero es que coja el texto introducido por el usuario, es decir, utilizando algo parecido a esto:
Using perl Syntax Highlighting
- use strict;
- use CGI;
- my $form = new CGI;
- my $txt = $form ->param('textointroducido');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Por lo tanto, el texto lo obtengo bien con el método POST, pero ¿alguien sabe cómo puedo integrar lo que quiero hacer en el código Perl para que haga la llamada a Google con el texto obtenido? ¿O si hay una manera más fácil de hacer lo que quiero hacer?
Bueno, a ver si alguien me puede echar una mano.
¡Muchas gracias!
Un saludo.