Script amb colorets i comentaris:
#!/usr/bin/perl # comprova si tot es estritament correcte, i si no, dona error use strict; # escriu avisos si algo no esta clar de tot use warnings; # carrega la capcalera Socket del grup IO # funciona com #include <arxiu.h> en C use IO::Socket; # canvia el tipus d'entrada a "no-bloquegant" # aixi en la linia my $tmp = <STDIN> no espera entrada alguna abans de continuar STDIN->blocking(0); my ($secs, $mins, $hour, $day, $mo, $year) = localtime (time); my $tempo = localtime (time); my $total = 0; printf "Cámara de seguridad en marcha\n" . "Inicio de la captura de imágenes: $tempo\n" . "Presiona Ctrl+C durante dos segundos para detener la cámara.\n" . "Capturando:\n"; # un for sense condisio s'executa infinitament for (my $j = 0;; $j++) { ($secs, $mins, $hour, $day, $mo, $year) = localtime (time); my $dir = "archivo$hour"; my $file = "$dir/imagen$hour:$mins:$secs.jpg"; # funcio system te dos modes de passar arguments # primera es ficar-ho tot (executable i arguments) en una variable de text # segon es passar una llista a on el primer camp es el executable i altres # son els seus arguments # primer metode es pitjor, ja que separa un argument de l'altre on hi # han espais en blanc, per aixo no es pot passar arguments amb espai, # a mes per a fer-ho crida a shell # segon metode funciona directament i molt millor, no necessita shell # qw() crea una llista del text que hi ha dins dividint en llocs oh ni han # espais en blanc; # NO ES UNA FUNCIO ! '(' i ')' son simplement limitadors qw// funciona igual system qw(gqcam -v /dev/video0 -d imagen -t JPEG); system "mkdir", $dir unless -d $dir; system "cp", "imagen", $file; my $size = (stat "imagen" )[7] / 1024; $total += $size; printf "%.2i:%.2i:%.2i Imagen: $j, Espacio ocupado %iKB," . " total: %iKB \r", $hour, $mins, $secs, int $size, int $total; # llig la entrada estandar if ( my $tmp = <STDIN> ) { # comprova si apareix 'q' exit 0 if $tmp =~ /q/; } sleep 1; }Com és que he tingut temps i ganes ficar-ho tot amb colorets explicare en un altre post. Stay tuned !
No hay comentarios:
Publicar un comentario