Em Perl, você pode ler a entrada padrão (geralmente o teclado) usando o manipulador de arquivo <STDIN>
. Aqui está um exemplo que lê uma linha de entrada do usuário:
print "Digite seu nome: ";
my $nome = <STDIN>;
chomp($nome); # Remove o caractere de nova linha
print "Olá, $nome!\n";
O Operador Diamante (<>
) é uma maneira conveniente de ler a entrada de arquivos especificados como argumentos da linha de comando ou da entrada padrão se nenhum arquivo for fornecido. Ele lê linhas de arquivos uma a uma. Aqui está um exemplo:
while (<>) {
chomp; # Remove o caractere de nova linha
print "Linha: $_\n";
}
Você pode executar este script com perl script.pl arquivo.txt
para ler de um arquivo ou apenas perl script.pl
para ler da entrada padrão.
Para acessar os argumentos da linha de comando passados para o seu script Perl, você pode usar o array @ARGV
. Aqui está um exemplo que imprime todos os argumentos da linha de comando:
foreach my $arg (@ARGV) {
print "Argumento: $arg\n";
}
Execute o script com perl script.pl arg1 arg2 arg3
.
Você pode imprimir a saída na saída padrão (geralmente o terminal) usando a função print
. Aqui está um exemplo simples:
print "Olá, mundo!\n";
A função printf
permite formatar a saída usando espaços reservados. Você fornece uma string de formato com espaços reservados e valores a serem inseridos. Aqui está um exemplo:
my $nome = "Alice";
my $idade = 30;
printf("Nome: %s, Idade: %d\n", $nome, $idade);
printf
pode formatar a saída para arrays, tornando-o útil para dados tabulares. Aqui está um exemplo que formata um array de nomes e idades:
my @nomes = ("Alice", "Bob", "Charlie");
my @idades = (30, 25, 35);
for my $i (0 .. $#nomes) {
printf("Nome: %-10s Idade: %2d\n", $nomes[$i], $idades[$i]);
}
Neste exemplo, espaços reservados como %s
e %2d
controlam a formatação dos elementos do array.
Os manipuladores de arquivo em Perl são usados para operações de entrada e saída, permitindo que você leia e escreva em arquivos, bem como interaja com a entrada e saída padrão.
Para abrir um arquivo para leitura ou escrita, você pode usar a função open
. Aqui está um exemplo de abrir um arquivo para leitura:
open my $manipulador_arquivo, '<', 'exemplo.txt' or die "Não foi possível abrir o arquivo: $!";
Binmoding de um manipulador de arquivo é importante ao trabalhar com dados binários. Você pode usar a função binmode
para definir um manipulador de arquivo como modo binário:
binmode $manipulador_arquivo;
Manipuladores de arquivo inválidos podem ocorrer se a função open
falhar ao abrir um arquivo. Você pode verificar o valor de retorno de open
para lidar com manipuladores de arquivo inválidos adequadamente.
if (!open my $manipulador_arquivo, '<', 'inexistente.txt') {
warn "Falha ao abrir o arquivo: $!";
}
É essencial fechar um manipulador de arquivo quando você terminar de usá-lo para liberar recursos do sistema e garantir que os dados sejam gravados no arquivo. Use a função close
:
close $manipulador_arquivo or die "Erro ao fechar o arquivo: $!";
A função die
em Perl é usada para gerar erros fatais e encerrar o programa. É comumente usada para tratamento de erros. Aqui está um exemplo de uso do die
quando a abertura de um arquivo falha:
if (!open my $manipulador_arquivo, '<', 'exemplo.txt') {
die "Não foi possível abrir o arquivo: $!";
}
Semelhante ao die
, a função warn
gera mensagens de aviso, mas não encerra o programa. É útil para erros não fatais ou problemas que você deseja relatar.
if (!open my $manipulador_arquivo, '<', 'inexistente.txt') {
warn "Falha ao abrir o arquivo: $!";
}
A praga autodie
, disponível no Perl, permite que você invoque automaticamente die
quando certas chamadas de sistema (por exemplo, open
, close
) falham. Simplifica o tratamento de erros:
use autodie;
open my $manipulador_arquivo, '<', 'exemplo.txt'; # Morre automaticamente em caso de falha
Uma vez que um manipulador de arquivo está aberto, você pode ler e gravar dados usando várias funções e operadores Perl.
Você pode alterar o manipulador de arquivo de saída padrão usando o operador select
. Isso é útil quando você deseja direcionar a saída para um arquivo ou fluxo específico.
select $manipulador_arquivo; # Define $manipulador_arquivo como o manipulador de saída padrão
print "Isso vai para o manipulador de arquivo selecionado.\n";
select STDOUT; # Retorna à saída padrão
print "Isso vai para a saída padrão.\n";
No Perl, é possível reabrir manipuladores de arquivo padrão (STDIN, STDOUT, STDERR) para red
irecionar sua entrada ou saída. Reabrir um manipulador de arquivo padrão pode ser útil para personalizar o comportamento de Entrada/Saída.
Para reabrir um manipulador de arquivo padrão, você pode usar a função open
, especificando o manipulador de arquivo que deseja reabrir e o modo desejado. Por exemplo, para reabrir STDERR para anexar:
open STDERR, '>>', 'erros.log' or die "Não foi possível abrir o arquivo de erros: $!";
É importante observar que reabrir um manipulador de arquivo padrão fechará a conexão original com o fluxo padrão (por exemplo, STDERR) e a substituirá pela nova.
A partir do Perl 5.10, a função say
está disponível para simplificar as operações de saída. say
é semelhante ao print
, mas anexa automaticamente um caractere de nova linha ao final da saída.
Aqui está um exemplo de uso do say
para imprimir uma saudação:
use 5.010; # Garanta Perl 5.10 ou superior
say "Olá, Mundo!";
A função say
é especialmente conveniente quando você deseja produzir linhas de texto com uma nova linha sem adicionar explicitamente "\n"
.
O Perl permite que você armazene manipuladores de arquivo em variáveis escalares, facilitando o gerenciamento e a passagem deles como argumentos para funções ou armazenamento em estruturas de dados. Isso é particularmente útil para controlar o escopo dos manipuladores de arquivo.
Aqui está um exemplo de abrir um arquivo e armazenar o manipulador de arquivo em uma variável escalar:
my $manipulador_arquivo;
open $manipulador_arquivo, '<', 'dados.txt' or die "Não foi possível abrir o arquivo de dados: $!";
Em seguida, você pode usar a variável escalar $manipulador_arquivo
para operações de entrada ou saída subsequentes, assim como faria com um manipulador de arquivo de palavra-simbólica.
while (<$manipulador_arquivo>) {
chomp;
# Processar cada linha do arquivo
}
Manipuladores de arquivo em variáveis escalares fornecem uma melhor encapsulação e controle sobre operações de Entrada/Saída de arquivo, especialmente em programas Perl maiores.