Sintonizando dez programas perl curtas, úteis

Algumas pessoas acreditam que programas curtos não são bons para muito, mas isso não é assim com Perl. Apenas um par de linhas de código Perl pode percorrer um longo caminho. Este artigo lista alguns pequenino acessível, pequenos programas em Perl.

Recolha de linhas originais

Se o seu arquivo de texto tem muitas linhas que são duplicatas e você só quer ver as linhas exclusivas, você pode coletá-los em uma matriz (neste caso, é chamado @Unique) com o seguinte programa:

aberta (IN “somefile.txt”) - @Unique = () -
enquanto() {A menos ($ i {$ _} ++) {push (@Unique, $ _)}}

O truque aqui é que $ i {$ _} ++ retorna 0 na primeira vez que criar um par de valor-chave com $ _ como a chave, e alguns valor diferente de zero depois disso.

Livrar-se de várias linhas em branco

Alguns arquivos de texto têm múltiplas, linhas em branco consecutivas, que os tornam difíceis de ler, especialmente em telas pequenas. O programa a seguir imprime um arquivo de texto, comprimindo todas as instâncias de duas ou mais linhas em branco em uma única linha em branco.

Video: ‹TOP 10 - MELHORES PROGRAMAS PARA PC I 2015 I HD ›

Nota: Uma linha em branco podem ter caracteres de espaço em que, tais como os espaços e as abas, mas não há caracteres visualizáveis.

aberta (IN “somefile.txt”) - $ PrevBlank = 0-
enquanto() {
if (/ S / ou! $ PrevBlank) {print $ _}
$ PrevBlank = / ^ s * $ / -
}

A instrução if no exemplo anterior é verdadeira se houver caracteres não vazias na linha ou se a linha anterior não estava em branco. A atribuição $ PrevBlank informa se a linha atual é em branco, o que significa que ele tem zero ou mais caracteres em branco e nada mais.

Imprimir linhas de um arquivo na ordem de classificação

É fácil esquecer o quão útil função de classificação do Perl é. O programa a seguir lê o arquivo inteiro em uma matriz, classifica a matriz, e imprime o resultado. Curto e doce, e muito eficiente de boot:

aberta (IN “somefile.txt”) -
tipo de impressão ();

Imprimindo uma gama de linhas de um arquivo

Alguma vez você já quis ler apenas algumas linhas de um arquivo, e não a coisa toda? O programa a seguir imprime apenas uma gama de linhas. Você executar o programa com dois argumentos: o intervalo que deseja e o nome do arquivo. Por exemplo, se você nomear seu programa “Showline” e você quer ver as linhas 10 a 20 do arquivo somefile.txt, você usar esta linha de comando:

Showline 10-20 somefile.txt

O programa seguinte imprime uma gama de linhas:

aberta (IN, $ ARGV [1]) ou morrer “Não foi possível ler $ File.n” -
($ Iniciar, $ Stop) = split (/ - /, $ ARGV [0]) -
for ($ i = $ 1- ilt; = $ Para- $ i + = 1)
{$ Linha = - if ($ IGT; = $ Start) {print $ Line}}

Listagem apenas os arquivos em um diretório

Às vezes, você pode querer ignorar os subdiretórios em um diretório e se concentrar apenas sobre os arquivos. Você pode usar o seguinte teste -f arquivo para listar todos os arquivos em um diretório:

foreach $ f (lt; * gt;) {if (-f $ f) {print “$ fn”}}

Listagem um diretório por tamanho

Para classificar, uma listagem de diretório por outra coisa senão seus nomes, seu programa tem que manter uma lista de registros que consiste nos nomes e outros itens na lista. Hashes são ótimos para usar para este tipo de lista que tem registros com uma chave (o nome do arquivo) e um valor (o outro informações de diretório). O programa a seguir cria um hash que lista o tamanho de cada arquivo no diretório e, em seguida, classifica os itens para a saída. (Você pode facilmente modificar este programa para classificar por data, em vez de por tamanho.)

Video: ✔ Qual o "Programa" Que Abre Qualquer Tipo de Arquivo?



foreach $ f (lt; * gt;) {$ i $ {f} = -s $ f} -
foreach $ k (tipo {$ i {$ b} lt; => $ i {$ a}} chaves% i)
{Printf “% 8d% sn”, $ i {$ k}, $ k}

Classificando diretórios por extensão

Triagem por uma porção de um ficheiro é um processo um pouco mais difícil do que a triagem por tamanho do ficheiro ou até à data o ficheiro foi modificada. O programa a seguir quebra o nome do arquivo em dois e classifica pela segunda parte. Se você estiver executando Perl em um sistema UNIX ou Macintosh, este programa funciona previsivelmente somente se os nomes de arquivos não têm nenhum período ou de um período:

foreach $ NomeCompleto (lt; * gt;) {
($ Nome, $ Ext) = split (/./, $ FullName, 2) -
empurrar (@Temp, “$ Extt $ FullName”) -
}
foreach $ Val (sort (@Temp)) {
($ Ext, $ FullName) = split (/ t /, $ Val) -
imprimir “$ FullNamen” -
}

Criando uma calculadora simples

Sempre necessária uma calculadora simples de usar para derrubar alguma matemática rápida e suja? O programa a seguir usa a função eval do Perl para imprimir as respostas para qualquer equação que você entra. Para terminar o programa, insira uma linha em branco. Aqui está o programa para criar o seu próprio calculadora:

enquanto() {
$ I = $ _- chomp ($ i) - a menos ($ i) {último}
$ O = eval ($ i) - print “Resposta = $ on” -
}

Quando você executar o programa, você pode digitar algo como o seguinte:

((2 ** 8) + (3 ** 8))

e você obter este resultado:

Resposta = 6817

Randomização uma lista

Em Perl, geração de números aleatórios é fácil, mas randomizar o fim de uma matriz não é tão simples. No entanto, você pode usar a função de emenda para puxar um elemento aleatório de uma matriz e, em seguida, colocar o elemento em outro array. O programa a seguir randomizes a lista @MyList:

minha @TempList = () -
enquanto (@MyList)
{Push (@TempList, tala (@MyList, margem (@MyList), 1))}
@MyList = @TempList;

O truque aqui é que rand (@MyList) escolhe um número entre 0 e o número de elementos em @MyList e splice muda este número aleatório para um número inteiro.

Gerar senhas aleatórias mnemônicos

Tentando convencer os usuários de computador para chegar a senhas que não são facilmente descobertas é um dos trabalhos mais difíceis para um administrador de sistema. As pessoas sempre parecem insistir em usar as suas datas de nascimento ou nomes dos animais de estimação para senhas - segurança violar então se torna uma brincadeira de criança.

Video: 5 Melhores Programas Para Seu PC [TOP 5]

O programa a seguir gera senhas aleatórias. Em vez de um amontoado de letras difíceis de lembrar, no entanto, as senhas são um pouco mnemônico, porque eles aparecem em pares de consoantes e vogais que são pronunciável. Pelo encadeamento algumas sílabas patetas-som, você pode gerar fácil de lembrar frases sem sentido.

Cada sílaba da palavra-passe pode representar qualquer um dos 100 numbers-, portanto, um único código de quatro sílaba, tal como votahubo, é um dos 100 milhões (100 à quarta potência) possíveis senhas o programa gera. Ter um administrador do sistema atribuir essas senhas fornece mais segurança do que permitir que os usuários escolher suas próprias senhas, facilmente descobertas:

print “Digite um número de sementes:“- $ s =-
srand ($ s ^ tempo) -
@ C = split (/ * / “bcdfghjklmnprstvwxyz”) -
@ V = split (/ * /, “aeiou”) -
for ($ i = 1- $ i lt; = 4- $ i + = 1)
{Print $ c [int (rand (20))], $ v [int (rand (5))]}

As primeiras duas linhas deste programa inicializar a semente para os números aleatórios, e as duas linhas seguintes criar listas contendo os 20 consoantes (menos q) E 5 vogais do alfabeto. O loop para simplesmente imprime as quatro sílabas.


Publicações relacionadas