Buenas!
Recientemente he empezado a trabajar 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 he guardado en / var / ww:
1.
Method = post <FORM action="cgi-bin/ApiPerl">
2.
Web Translator
3.
BORDER=0> <TABLE
4.
<TR>
5.
<TD> Introduzca el texto a traducir </ TD>
6.
<TD>
7.
Filas = "3" <TEXTAREA name="textointroducido"> entrada
8.
</ TEXTAREA>
9.
10.
</ TD>
11.
</ TR>
12.
13.
<TR>
14.
<td COLSPAN=2>
15.
Name = "Traducir" <INPUT type="submit" value="traducir">
16.
</ TD>
17.
</ TR>
18.
</ TABLE>
19.
</ FORM>
Comencé a crear el script en Perl que toma la variable "textointroducido" (que es el texto que queremos traducir) y usando las APIs de google translate quiero que me lo devuleva en una variable para mostrarla en una pagina html.
1.
use strict;
2.
use CGI;
3.
4.
my $form = new CGI;
5.
my $txt = $form ->param('textointroducido');
En este punto, consigo guardar el texto introducido por el usuario ("textointroducido") en $txt. Ahora mi problema es a la hora de hacer las llamadas Google.
He encontrado un programa escrito en perl que traduce del Inglés al francés (en mi caso yo quiero que traduzca de ingles a español..pero bueno sirve de ejemplo) el problema de este programa es que el texto que queremos traducir es introducido a través de la entrada estándar . Aqui os muestro el codigo
1.
#!/usr/bin/perl
2.
3.
use REST::Client;
4.
use JSON;
5.
use HTML::Entities qw(decode_entities);
6.
7.
8.
while (1)
9.
{
10.
print "Please enter English word: ";
11.
chop ( $_ = <STDIN>);
12.
13.
my $client = REST::Client->new();
14.
$client->GET("@de la API de google"); --Lo pongo asi porque no me deja poner la url en el foro
15.
$response = $client->responseContent();
16.
17.
$json_text = from_json( $response );
18.
19.
foreach my $french(@{$json_text->{data}->{translations}})
20.
{
21.
my %ep_hash = ();
22.
$ep_hash{translatedText} = "Translated to French: $french->{translatedText}";
23.
24.
# print french
25.
while (my($key, $value) = each (%ep_hash))
26.
{
27.
print decode_entities($value);
28.
}
29.
}
30.
print "n";
31.
}
Bueno, he tratado de integrar el código escrito por mí en este programa de perl y nada. He leído que a lo mejor hay que codificar la variable $txt URI:: Encode para integrarlo en la URL...no sé...he estado leyendo y tampoco se cómo se haria ..
Bueno, a ver si alguien me puede ayudar o si alguien sabe de alguna manera más fácil de hacer lo que quiero que me lo comente...cualquier comentario o sugerencia es bienvenida.
Gracias!
Un Saludo!