[Ajuda]Correcção Codigo Perl

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Mensagempor andrebarradas » Quarta Mai 19, 2010 13:47

LuisFilipe Escreveu:
Código: Seleccionar todos
my $glob = "*.{$ARGV[1]}";
if ($#ARGV == 2) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]}";}
if ($#ARGV == 3) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]} *.{$ARGV[3]}";}

print " $glob \n";
my @Globarray = glob($glob);
print " @Globarray \n";

pffffffffff :roll:


diz-me quantos argumentos podem entrar.pelo que me parece so podem entrar no maximo 4,a directoria e 3 extensoes nao?
andrebarradas
Aprendiz
Aprendiz
 
Mensagens: 56
Registado: Segunda Dez 28, 2009 15:06

Mensagempor LuisFilipe » Quarta Mai 19, 2010 15:22

andrebarradas Escreveu:diz-me quantos argumentos podem entrar.pelo que me parece so podem entrar no maximo 4,a directoria e 3 extensoes nao?
Pobre e mal agradecido :roll:
Isto funciona o que acho um marco ... :D
Agora se queres usar um for ou o que seja e ir concatenando aquelas tretas... :?
e podes sempre aumentar a coisa à bruta ... 8O
Código: Seleccionar todos
my $glob = "*.{$ARGV[1]}";
if ($#ARGV == 2) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]}";}
if ($#ARGV == 3) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]} *.{$ARGV[3]}";}
if ($#ARGV == 4) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]} *.{$ARGV[3]} *.{$ARGV[4]}";}
if ($#ARGV == 5) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]} *.{$ARGV[3]} *.{$ARGV[4]} *.{$ARGV[5]}";}
if ($#ARGV == 6) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]} *.{$ARGV[3]} *.{$ARGV[4]} *.{$ARGV[5]} *.{$ARGV[6]}";}

print " $glob \n";
my @Globarray = glob($glob);
print " @Globarray \n";
Que nojo :(
LuisFilipe
Membro Diamante
Membro Diamante
 
Mensagens: 1270
Registado: Domingo Set 04, 2005 22:12

Mensagempor andrebarradas » Quarta Mai 19, 2010 16:20

LuisFilipe Escreveu:
andrebarradas Escreveu:diz-me quantos argumentos podem entrar.pelo que me parece so podem entrar no maximo 4,a directoria e 3 extensoes nao?
Pobre e mal agradecido :roll:
Isto funciona o que acho um marco ... :D
Agora se queres usar um for ou o que seja e ir concatenando aquelas tretas... :?
e podes sempre aumentar a coisa à bruta ... 8O
Código: Seleccionar todos
my $glob = "*.{$ARGV[1]}";
if ($#ARGV == 2) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]}";}
if ($#ARGV == 3) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]} *.{$ARGV[3]}";}
if ($#ARGV == 4) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]} *.{$ARGV[3]} *.{$ARGV[4]}";}
if ($#ARGV == 5) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]} *.{$ARGV[3]} *.{$ARGV[4]} *.{$ARGV[5]}";}
if ($#ARGV == 6) {$glob = "*.{$ARGV[1]} *.{$ARGV[2]} *.{$ARGV[3]} *.{$ARGV[4]} *.{$ARGV[5]} *.{$ARGV[6]}";}

print " $glob \n";
my @Globarray = glob($glob);
print " @Globarray \n";
Que nojo :(


lol não e uma questao de ser pobre e mal agradecido,mas se nao faz nada do que pretendo.se quiser procurar 50 extensoes tou feito lol
andrebarradas
Aprendiz
Aprendiz
 
Mensagens: 56
Registado: Segunda Dez 28, 2009 15:06

Mensagempor LuisFilipe » Quinta Mai 20, 2010 1:15

Código: Seleccionar todos
#!/usr/bin/perl -w
use strict;

#Verificar se entrou pelo menos 2 argumentos
if (@ARGV < 2) {die("Tem de colocar pelo menos2 argumentos(1ºdir,2º e restantes ext)");}

#Verificar se o primeiro argumento é directoria
if (!-d $ARGV[0]) {die("Primeiro argumento tem de ser directoria");}

#construir filtro com a função glob
Código: Seleccionar todos
my $glob = "*." . join (" *.", @ARGV[1..$#ARGV]);
print "$glob \n";
Código: Seleccionar todos
my @Globarray = glob($glob);
print " @Globarray \n";

Testado (agora diz obrigado)...
A alteração é só a parte do meio...
Agora copias e apresentas ao professor e não aprendeste nada nem sabes como e onde aprender (assim vai Portugal...)
LuisFilipe
Membro Diamante
Membro Diamante
 
Mensagens: 1270
Registado: Domingo Set 04, 2005 22:12

Anterior

Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron