Foros del Web » Programación para mayores de 30 ;) » Programación General »

consulta scripts perl

Estas en el tema de consulta scripts perl en el foro de Programación General en Foros del Web. hola mi nombre es leon...tengo una consulta sobre como ejecutar un scripts perl bajo ms-dos. el scrpts se llama makefsdata.pl.... comienza asi.... #!/usr/bin/perl open(OUTPUT, "> ...
  #1 (permalink)  
Antiguo 29/07/2007, 19:01
 
Fecha de Ingreso: julio-2007
Ubicación: temuco ,chile
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
consulta scripts perl

hola mi nombre es leon...tengo una consulta sobre como ejecutar un scripts perl bajo ms-dos. el scrpts se llama makefsdata.pl....
comienza asi....


#!/usr/bin/perl

open(OUTPUT, "> fsdata.c");

chdir("fs");
open(FILES, "find . -type f |");

while($file = <FILES>) {

# Do not include files in CVS directories nor backup files.
if($file =~ /(CVS|~)/) {
next;
}

chop($file);

open(HEADER, "> /tmp/header") || die $!;
if($file =~ /404.html/) {
print(HEADER "HTTP/1.0 404 File not found\r\n");
} else {
print(HEADER "HTTP/1.0 200 OK\r\n");
}
print(HEADER "Server: uIP/0.9 (http://dunkels.com/adam/uip/)\r\n");
if($file =~ /\.html$/) {
print(HEADER "Content-type: text/html\r\n");
} elsif($file =~ /\.gif$/) {
print(HEADER "Content-type: image/gif\r\n");
} elsif($file =~ /\.png$/) {
print(HEADER "Content-type: image/png\r\n");
} elsif($file =~ /\.jpg$/) {
print(HEADER "Content-type: image/jpeg\r\n");
} else {
print(HEADER "Content-type: text/plain\r\n");
}
print(HEADER "\r\n");
close(HEADER);

unless($file =~ /\.plain$/ || $file =~ /cgi/) {
system("cat /tmp/header $file > /tmp/file");
} else {
system("cp $file /tmp/file");
}

open(FILE, "/tmp/file");
unlink("/tmp/file");
unlink("/tmp/header");

$file =~ s/\.//;
$fvar = $file;
$fvar =~ s-/-_-g;
$fvar =~ s-\.-_-g;
print(OUTPUT "static const char data".$fvar."[] = {\n");
print(OUTPUT "\t/* $file */\n\t");
for($j = 0; $j < length($file); $j++) {
printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));
}
printf(OUTPUT "0,\n");


$i = 0;
while(read(FILE, $data, 1)) {
if($i == 0) {
print(OUTPUT "\t");
}
printf(OUTPUT "%#02x, ", unpack("C", $data));
$i++;
if($i == 10) {
print(OUTPUT "\n");
$i = 0;
}
}
print(OUTPUT "};\n\n");
close(FILE);
push(@fvars, $fvar);
push(@files, $file);
}

for($i = 0; $i < @fvars; $i++) {
$file = $files[$i];
$fvar = $fvars[$i];

if($i == 0) {
$prevfile = "NULL";
} else {
$prevfile = "file" . $fvars[$i - 1];
}
print(OUTPUT "const struct fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");
print(OUTPUT "data$fvar + ". (length($file) + 1) .", ");
print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n");
}

print(OUTPUT "#define FS_ROOT file$fvars[$i - 1]\n\n");
print(OUTPUT "#define FS_NUMFILES $i");

la funcion del scripts es convertir paginas web planas a codigo hex para que sea interpretado por un microcontrolador.......
la idea es que cuando se llama al scripts desde ms-dos se le envie la direccion de la carpeta donde se encuentran las paginas web esta carpeta se llama fs.
entonces mi consulta es como ejecutar este scripts desde ms-dos, y ademas enviarle la carpeta fs al momento de llamar el scrits. yo tengo instalado activeperl en windows, e intente ejecutar el siguiente codigo desde ms-dos....y el programa me entrega lo siguiente
c:\documents and settings\gonzalo\escritorio\fs-carp>perl makefsdata.pl fs
FIND: formato de parametros incorrecto
  #2 (permalink)  
Antiguo 30/07/2007, 03:52
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Re: consulta scripts perl

El error es claro: no existe el comando find en tu ordenador. No es culpa de Perl. Es culpa de haber elegido ese sistema operativo de juguete.

Usa Linux. O instálate el Cygwin en Windows.

Actualización: de todas formas, se puede reescribir el programa para que funcione sin la necesidad del comando find.

Última edición por jferrero; 30/07/2007 a las 04:10
  #3 (permalink)  
Antiguo 30/07/2007, 17:35
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Re: consulta scripts perl

He estado mirando el programa... hay que hacer 7 cambios para que funcione en MSDOS... lo que quiere decir que no es trivial el arreglo.

Necesitaría un ejemplo de entrada y un ejemplo de salida, aunque que fueran minúsculos e inventados.
  #4 (permalink)  
Antiguo 30/07/2007, 23:55
 
Fecha de Ingreso: julio-2007
Ubicación: temuco ,chile
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
De acuerdo Re: consulta scripts perl

Gracias por responder..
1-Como hago para ejecutar este scripts en linux. ya que mi conocimiento en este lenguaje es basico, y muy limitado. ojala pudieras indicar los pasos a todo entendedor, y segun tengo entendido cygwin, es solo un emulador por lo que los pasos debieran ser los mismo que para linux.


Ojala pueda me pudieras dar un correo al cual yo me comunique para ser mas específico y pueda enviarte archivos.
  #5 (permalink)  
Antiguo 31/07/2007, 03:11
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Re: consulta scripts perl

El programa lo debes instalar en un directorio conocido por $PATH, para que pueda ser ejecutado desde cualquier sitio. De hecho, hay que ejecutarlo en el mismo directorio en donde están los ficheros a convertir.

Si es un Linux moderno, lo pondría en /usr/local/bin/.

También debes comprobar que tienes permiso de escritura en /tmp, que por defecto sí que está en la mayoría de distribuciones.

En cuanto a mensajes privados, puedes usar el de este sistema de foros.
  #6 (permalink)  
Antiguo 02/08/2007, 10:07
 
Fecha de Ingreso: julio-2007
Ubicación: temuco ,chile
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
De acuerdo Re: consulta scripts perl

por fin logre ejecutar el scripts makefsdata........
gracias joaquin ferrero.....por la ayuda prestada


primero instale el emulador Cygwin en windows
seguido.......
deje la carpeta con las paginas web, donde me aconsejaste....

C:\cygwin\usr\local\bin

despues ejecute el icono Cygwin

donde primero revise la version de perl instalado con el siguiente comando

$ perl -v

seguido me posesione en la carpeta donde se encontaba el scripts

$ cd ..
$ cd ..
$ cd usr
$ cd local
$ cd bin


aqui solamente ejecute el scripts ,,,,,y listo.....

$ perl makefsdata

generándose así el archivo fsdata.c

no fue necesario otorgarle permiso de ejecucion al scripts.......
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:41.