Carlos Rodrigues Postado Janeiro 11, 2011 Denunciar Share Postado Janeiro 11, 2011 Estou aprendendo perl e fiz uma espécie de programa que abre arquivos, eu coloquei num laço while para que o diretório pudesse sempre ser escrito e pensei que em quando se digitasse 'sair' o laço parava. Porém não está dando certo. Aqui o código:#!/usr/bin/perl sub abrir{ my ($x) = @_; open(INFO, $x); @arquivo = <INFO>; close(INFO); print @arquivo}$c = 1;while($c == 1){ print ':'; $a = <STDIN>; if($a == 'sair'){ $c = 2; } else{ abrir($a); } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 danielmantovani Postado Março 15, 2011 Denunciar Share Postado Março 15, 2011 Bom vamos lá, primeiro para comparar strings não usamos o operador "==".Relational Operators Binary "<" returns true if the left argument is numerically less than the right argument. Binary ">" returns true if the left argument is numerically greater than the right argument. Binary "<=" returns true if the left argument is numerically less than or equal to the right argument. Binary ">=" returns true if the left argument is numerically greater than or equal to the right argument. Binary "lt" returns true if the left argument is stringwise less than the right argument. Binary "gt" returns true if the left argument is stringwise greater than the right argument. Binary "le" returns true if the left argument is stringwise less than or equal to the right argument. Binary "ge" returns true if the left argument is stringwise greater than or equal to the right argument.Depois, após a pessoa digitar "sair", terá um "\n" nova linha na string. Então $c eq "sair" nunca será verdadeiro.Para isso você precisará usar a função chomp() que retira o "\n" do final da string.Aqui segue um programa que eu escrevi rápido sem testar,#!/usr/bin/perl use strict; use warnings; sub abrir { my $x = shift; open my $fh, '>', $x or die $!; while ( my $line = <$fh> ) { print $line; } return 1; } { while (1) { chomp(my $a = <STDIN>); if ( $a eq 'sair' ) { print "Você está saindo do programa"; last; } else { if ( -e $a ) { print "Você está abrindo o arquivo: $a"; abrir($a); } else { print "O arquivo: $a não existe\n"; } } } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Carlos Rodrigues
Estou aprendendo perl e fiz uma espécie de programa que abre arquivos, eu coloquei num laço while para que o diretório pudesse sempre ser escrito e pensei que em quando se digitasse 'sair' o laço parava. Porém não está dando certo. Aqui o código:
#!/usr/bin/perl
sub abrir{
my ($x) = @_;
open(INFO, $x);
@arquivo = <INFO>;
close(INFO);
print @arquivo
}
$c = 1;
while($c == 1){
print ':';
$a = <STDIN>;
if($a == 'sair'){
$c = 2;
}
else{
abrir($a);
}
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.