LibNet es un conjunto de módulos que proporciona acceso a diferentes protocolos, como FTP, NNTP (news), SMTP o POP3. No proporciona directamente acceso a funciones HTTP, porque para eso ya existe otro módulo, LibWWW.
#!/usr/bin/perl -w use Net::FTP; use File::Basename; $server = $ARGV[0]; $dir = $ARGV[1]; $conn = new Net::FTP($server,Debug,1) or die "Imposible conectar con $server.\n"; $conn->login or die "El servidor $server no permite login anónimo.\n"; $conn->binary; bajar_dir ($conn, $dir); exit; sub bajar_dir { my $ftpconn = $_[0]; my $ftpdir = $_[1]; my $localdir = basename($ftpdir); mkdir($localdir,0755); chdir($localdir); my @lista_ficheros = $ftpconn->ls($ftpdir); foreach $f (@lista_ficheros) { if ($ftpconn->cwd($f)) { bajar_dir ($ftpconn,$f); chdir(".."); } else { $ftpconn->get($f) or die "Error al bajar $f!\n"; } } }
#!/usr/bin/perl -w use Net::NNTP; sub repetir { my $caracter = $_[0]; my $veces = $_[1]; for ($i=0; $i<$veces; $i++) { print $caracter; } } sub justificar_izq { my $cadena = $_[0]; my $ancho = $_[1]; print $cadena; repetir (" ", ($ancho - length($cadena))); } $server = $ARGV[0]; $match = $ARGV[1]; if (!$match) { $match="*"; } $n = new Net::NNTP("$server", Debug, 1) or die "Imposible conectar con $server\n"; %lista = %{$n->active($match)} or die "El servidor $server no soporta LIST ACTIVE\n"; $n->quit; justificar_izq (" Grupo", 65); print "Artículos\n"; repetir ("-", 79); print "\n"; foreach $g (keys %lista) { my @data = @{$lista{$g}}; my $num_articulos = $data[0] - $data[1]; justificar_izq ($g, 65); print "$num_articulos\n"; }
#!/usr/bin/perl -w use Net::POP3; print "\nServidor: "; $servidor=<STDIN>; chomp($servidor); print "Usuario: "; $usuario=<STDIN>; chomp($usuario); print "Password: "; $password=<STDIN>; chomp($password); $pop = new Net::POP3($servidor) or die "Imposible conectar al servidor"; $num_mensajes = $pop->login($usuario,$password) or die "Error en login"; print "Número de mensajes: $num_mensajes\n"; $lista = ""; $msginicial=0; for ($n=$msginicial;$n<$num_mensajes;$n++) { @cabecera = $pop->top($n); foreach $l (@{$cabecera[0]}) { if ($l =~ /^From: /) { $lista .= "* $n: $l"; } } foreach $l (@{$cabecera[0]}) { if ($l =~ /^(To|Subject|Date): /) { $lista .= "\t$l"; } } } $pop->quit();