InglêsFrancêsEspanhol

favicon do OnWorks

perlform - Online na nuvem

Execute perlform no provedor de hospedagem gratuita OnWorks no Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

Esta é a execução de comando que pode ser executada no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

PROGRAMA:

NOME


perlform - formatos Perl

DESCRIÇÃO


Perl tem um mecanismo para ajudá-lo a gerar relatórios e gráficos simples. Para facilitar isso,
Perl ajuda você a codificar sua página de saída de acordo com a aparência dela quando for impressa. Isto
pode controlar coisas como quantas linhas existem em uma página, em qual página você está, quando
imprimir cabeçalhos de página, etc. As palavras-chave são emprestadas do FORTRAN: formato() declarar e
write () executar; veja suas entradas em perlfunc. Felizmente, o layout é muito mais
legível, mais parecido com a instrução PRINT USING do BASIC. Pense nisso como um homem pobre nroff(1).

Formatos, como pacotes e sub-rotinas, são declarados ao invés de executados, então eles podem
ocorrer em qualquer ponto do seu programa. (Normalmente, é melhor mantê-los todos juntos.)
Eles têm seu próprio namespace separado de todos os outros "tipos" em Perl. Isso significa que
se você tem uma função chamada "Foo", não é a mesma coisa que ter um formato chamado
"Foo". No entanto, o nome padrão para o formato associado a um determinado filehandle é o
mesmo que o nome do filehandle. Assim, o formato padrão para STDOUT é denominado
"STDOUT" e o formato padrão para o arquivo TEMP é denominado "TEMP". Eles apenas olham o
mesmo. Eles não são.

Os formatos de registro de saída são declarados da seguinte forma:

formato NAME =
LISTA DE FORMATO
.

Se o nome for omitido, o formato "STDOUT" é definido. Um único "." na coluna 1 é usado para
encerrar um formato. FORMLIST consiste em uma sequência de linhas, cada uma das quais pode ser uma de
três tipos:

1. Um comentário, indicado por '#' na primeira coluna.

2. Uma linha de "imagem" fornecendo o formato de uma linha de saída.

3. Uma linha de argumento fornecendo valores a serem inseridos na linha de imagem anterior.

As linhas de imagem contêm definições de campo de saída, mescladas com texto literal. Esses
as linhas não sofrem nenhum tipo de interpolação de variáveis. As definições de campo são feitas
a partir de um conjunto de caracteres, para iniciar e estender um campo até a largura desejada. Isto é
o conjunto completo de caracteres para definições de campo:

@início do campo regular
^ início do campo especial
<caractere pad para justificação à esquerda
| caractere de almofada para centralização
> caractere de teclado para justificação à direita
# caractere de teclado para um campo numérico justificado à direita
0 em vez do primeiro #: número de teclado com zeros à esquerda
. ponto decimal em um campo numérico
... encerrar um campo de texto, mostrar "..." como evidência de truncamento
@ * campo de largura variável para um valor multilinha
^ * campo de largura variável para a próxima linha de um valor de várias linhas
~ suprimir linha com todos os campos vazios
~~ repetir a linha até que todos os campos estejam esgotados

Cada campo em uma linha de imagem começa com "@" (arroba) ou "^" (circunflexo), indicando o que
chamaremos, respectivamente, de um campo "normal" ou "especial". A escolha dos caracteres do teclado
determina se um campo é textual ou numérico. Os operadores de til não fazem parte de um
campo. Vejamos as várias possibilidades em detalhes.

Texto Campos
O comprimento do campo é fornecido preenchendo o campo com vários "<", ">" ou
"|" caracteres para especificar um campo não numérico com, respectivamente, justificação à esquerda,
justificação certa, ou centralização. Para um campo regular, o valor (até o primeiro
nova linha) é tirada e impressa de acordo com a justificativa selecionada, truncando o excesso
personagens. Se você encerrar um campo de texto com "...", três pontos serão mostrados se o
o valor é truncado. Um campo de texto especial pode ser usado para fazer um texto rudimentar de várias linhas
enchimento de blocos; consulte "Usando o modo de preenchimento" para obter detalhes.

Exemplo:
formato STDOUT =
@ <<<<<< @ ||||||| @ >>>>>>
"esquerda", "meio", "direita"
.
Saída:
esquerda meio direita

Numérico Campos
Usar "#" como caractere de preenchimento especifica um campo numérico, com justificação à direita. Um
opcional "." define a posição do ponto decimal. Com um "0" (zero) em vez do
primeiro "#", o número formatado será preenchido com zeros à esquerda, se necessário. UMA
o campo numérico especial ficará em branco se o valor for indefinido. Se o valor resultante
excederia a largura especificada, o campo é preenchido com "#" como evidência de estouro.

Exemplo:
formato STDOUT =
@ ### @. ### @ ##. ### @ ### @ ### ^ ####
42, 3.1415, undef, 0, 10000, undef
.
Saída:
42 3.142 0.000 0 ####

A Campo @* for Largura Variável Multi-Linha Texto
O campo "@ *" pode ser usado para imprimir valores multilinhas não truncados; deveria (mas
não precisa) aparecer por si só em uma linha. Um feed de linha final é cortado, mas todos os outros
os caracteres são emitidos literalmente.

A Campo ^* for Largura Variável Uma linha de cada vez Texto
Como "@ *", este é um campo de largura variável. O valor fornecido deve ser uma variável escalar.
Perl coloca a primeira linha (até o primeiro "\ n") do texto no campo, e então corta
fora da frente da string para que da próxima vez que a variável for referenciada, mais do
o texto pode ser impresso. A variável irá não ser restaurado.

Exemplo:
$ text = "linha 1 \ nlinha 2 \ nlinha 3";
formato STDOUT =
Texto: ^ *
$ text
~~ ^ *
$ text
.
Saída:
Texto: linha 1
linha 2
linha 3

Especificando Valores
Os valores são especificados na seguinte linha de formato na mesma ordem que a imagem
Campos. As expressões que fornecem os valores devem ser separadas por vírgulas. Estão todas
avaliada em um contexto de lista antes que a linha seja processada, portanto, uma única expressão de lista
pode produzir vários elementos de lista. As expressões podem ser distribuídas para mais de um
linha se estiver entre colchetes. Nesse caso, a chave de abertura deve ser o primeiro token no primeiro
linha. Se uma expressão for avaliada como um número com uma parte decimal, e se o
a imagem correspondente especifica que a parte decimal deve aparecer na saída (que
ou seja, qualquer imagem, exceto vários caracteres "#" sem um "." incorporado), o personagem
usado para o ponto decimal é determinado pela localidade LC_NUMERIC atual se "usar localidade"
está em vigor. Isso significa que, se, por exemplo, o ambiente de tempo de execução acontece para
especificar uma localidade alemã, "," será usado em vez do padrão ".". Veja perllocale e
"AVISOS" para mais informações.

utilização Preencher Moda
Em campos de texto, o acento circunflexo ativa um tipo de modo de preenchimento. Em vez de uma expressão arbitrária,
o valor fornecido deve ser uma variável escalar que contém uma string de texto. Perl coloca o
próxima parte do texto no campo e, em seguida, corta a frente da string para
que da próxima vez que a variável for referenciada, mais do texto pode ser impresso. (Sim,
isso significa que a própria variável é alterada durante a execução do write () ligar, e
não é restaurado.) A próxima parte do texto é determinada por uma quebra de linha grosseira
algoritmo. Você pode usar o caractere de retorno de carro ("\ r") para forçar uma quebra de linha. Você pode
mude quais caracteres são permitidos para quebrar mudando a variável $: (que é
$ FORMAT_LINE_BREAK_CHARACTERS se você estiver usando o módulo de inglês) para uma lista dos desejados
caracteres.

Normalmente você usaria uma sequência de campos em uma pilha vertical associada ao mesmo
variável escalar para imprimir um bloco de texto. Você pode querer terminar o campo final com
o texto "...", que aparecerá na saída se o texto for muito longo para aparecer em seu
por inteiro.

Suprimindo Linhas Onde Todos Campos São vazio
O uso de campos circunflexos pode produzir linhas em que todos os campos ficam em branco. Você pode suprimir tal
linhas colocando um caractere "~" (til) em qualquer lugar da linha. O til será
traduzido para um espaço na saída.

recorrente Formato Linhas
Se você colocar dois caracteres til contíguos "~~" em qualquer lugar em uma linha, a linha será
repetido até que todos os campos da linha sejam esgotados, ou seja, indefinidos. Para especial
(circunflexo) campos de texto, isso ocorrerá mais cedo ou mais tarde, mas se você usar um campo de texto do em
variedade, a expressão que você fornece é melhor não dar o mesmo valor todas as vezes para sempre!
("shift (@f)" é um exemplo simples que funcionaria.) Não use um campo numérico regular (arroba)
nessas linhas, porque nunca ficará em branco.

Saída of Contato Tratamento
O processamento de início de formulário é, por padrão, tratado por um formato com o mesmo nome do atual
filehandle com "_TOP" concatenado a ele. É acionado no topo de cada página. Ver
"escrever" em perlfunc.

Exemplos:

# um relatório sobre o / Etc / passwd lima
formato STDOUT_TOP =
Arquivo Passwd
Nome Login Escritório Uid Gid Página inicial
-------------------------------------------------- ----------------
.
formato STDOUT =
@ <<<<<<<<<<<<<<<<<<<< @ |||||||| @ <<<<<< @ >>>> @ >>>> @ <<<<<<<<<<<<<<<<<<
$ name, $ login, $ office, $ uid, $ gid, $ home
.

# um relatório de um formulário de relatório de bug
formato STDOUT_TOP =
Relatórios de Bug
@ <<<<<<<<<<<<<<<<<<<<<<<<<< @ ||| @ >>>>>>>>>>>>>>>>>>>>>>>>
$ system, $%, $ date
-------------------------------------------------- ----------------
.
formato STDOUT =
Assunto: @ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<
$ assunto
Índice: @ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^ <<<<<<<<<<<<<<<<<< <<<<<<<<<<
$ index, $ description
Prioridade: @ <<<<<<<<<<< Data: @ <<<<<<< ^ <<<<<<<<<<<<<<<<<<<<<<<<<<< <
$ priority, $ date, $ description
De: @ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^ <<<<<<<<<<<<<<<< <<<<<<<<<<<
$ from, $ description
Atribuído a: @ <<<<<<<<<<<<<<<<<<<<<<< ^ <<<<<<<<<<<<<<<<<<<<<<< <<<<
$ programmer, $ description
~ ^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$ descrição
~ ^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$ descrição
~ ^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$ descrição
~ ^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$ descrição
~ ^ <<<<<<<<<<<<<<<<<<<<<<<<<<< ...
$ descrição
.

É possível misturar impressão()s com write ()está no mesmo canal de saída, mas você
tem que lidar com "$ -" ($ FORMAT_LINES_LEFT) por conta própria.

Formato Variáveis
O nome do formato atual é armazenado na variável $ ~ ($ FORMAT_NAME), e no topo atual
do nome do formato do formulário está em $ ^ ($ FORMAT_TOP_NAME). O número da página de saída atual é armazenado
em $% ($ FORMAT_PAGE_NUMBER), e o número de linhas na página está em $ =
($ FORMAT_LINES_PER_PAGE). Se a saída autoflush neste identificador é armazenada em $ |
($ OUTPUT_AUTOFLUSH). A saída da string antes de cada topo da página (exceto a primeira) é
armazenado em $ ^ L ($ FORMAT_FORMFEED). Essas variáveis ​​são definidas em uma base por filehandle, então
você precisará select () em um diferente para afetá-los:

selecione ((selecione (OUTF),
$ ~ = "My_Other_Format",
$ ^ = "My_Top_Format"
) [0]);

Muito feio, hein? No entanto, é um idioma comum, então não fique muito surpreso ao vê-lo.
Você pode pelo menos usar uma variável temporária para manter o filehandle anterior: (isto é muito
melhor abordagem em geral, porque não só melhora a legibilidade, agora você tem um
estágio intermediário na expressão para uma única etapa do depurador):

$ ofh = selecionar (OUTF);
$ ~ = "My_Other_Format";
$ ^ = "My_Top_Format";
selecione ($ ofh);

Se você usar o módulo em inglês, poderá até ler os nomes das variáveis:

use inglês;
$ ofh = selecionar (OUTF);
$ FORMAT_NAME = "Meu_Outro_Formato";
$ FORMAT_TOP_NAME = "My_Top_Format";
selecione ($ ofh);

Mas você ainda tem aqueles engraçados select ()s. Portanto, basta usar o módulo FileHandle. Agora você
pode acessar essas variáveis ​​especiais usando nomes de métodos em letras minúsculas:

usar FileHandle;
format_name OUTF "My_Other_Format";
format_top_name OUTF "My_Top_Format";

Muito melhor!

NOTAS


Porque a linha de valores pode conter expressões arbitrárias (para campos at, não circunflexo
campos), você pode terceirizar um processamento mais sofisticado para outras funções, como sprintf ()
ou um dos seus. Por exemplo:

formato Ident =
@ <<<<<<<<<<<<<<<
& commify ($ n)
.

Para obter um real at ou acento circunflexo no campo, faça o seguinte:

formato Ident =
Eu tenho um @ aqui.
"@"
.

Para centralizar uma linha inteira de texto, faça algo assim:

formato Ident =
@ ||||||||||||||||||||||||||||||egues
"Alguma linha de texto"
.

Não há uma maneira embutida de dizer "flutue isso para o lado direito da página, no entanto
ampla é. "Você tem que especificar para onde vai. Os verdadeiramente desesperados podem gerar seus
próprio formato em tempo real, com base no número atual de colunas, e então eval () ele:

$ format = "formato STDOUT = \ n"
. '^'. '<' x $ cols. "\ n"
. '$ entrada'. "\ n"
. "\ t ^". "<" x ($ cols-8). "~~ \ n"
. '$ entrada'. "\ n"
. ". \ n";
imprimir $ format if $ Debugging;
eval $ format;
morrer $ @ se $ @;

O que geraria um formato parecido com este:

formato STDOUT =
^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<
$ entrada
^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <~~
$ entrada
.

Aqui está um pequeno programa que é mais ou menos como fmt(1)

formato =
^ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~
$_

.

$ / = '';
enquanto (<>) {
s / \ s * \ n \ s * / / g;
escrever;
}

Rodapés
Embora $ FORMAT_TOP_NAME contenha o nome do formato do cabeçalho atual, não há
mecanismo correspondente para fazer automaticamente a mesma coisa para um rodapé. Sem saber como
grande será o formato até que você avalie que é um dos maiores problemas. Está ligado
a lista TODO.

Esta é uma estratégia: se você tiver um rodapé de tamanho fixo, poderá obter rodapés marcando
$ FORMAT_LINES_LEFT antes de cada write () e imprima o rodapé você mesmo, se necessário.

Aqui está outra estratégia: Abra um pipe para você mesmo, usando "open (MYSELF," | - ")" (consulte "open"
em perlfunc) e sempre write () para MYSELF em vez de STDOUT. Faça com que seu filho processe
massageie seu STDIN para reorganizar cabeçalhos e rodapés como quiser. Não é muito conveniente,
mas factível.

Acessando formatação Internos
Para acesso de baixo nível ao mecanismo de formatação, você pode usar formline () e acesse $ ^ A
(a variável $ ACCUMULATOR) diretamente.

Por exemplo:

$ str = formline << 'END', 1,2,3;
@ <<< @ ||| @ >>>
END

print "Uau, acabei de armazenar '$ ^ A' no acumulador! \ n";

Ou para fazer um swrite () sub-rotina, que é para write () o que sprintf () é printf (), Eu
esta:

use carpa;
subescrever {
croak "uso: swrite ARGS DE IMAGEM" a menos que @_;
meu $ format = shift;
$ ^ A = "";
formline ($ format, @ _);
return $ ^ A;
}

$ string = swrite (<< 'END', 1, 2, 3);
Olhe para mim
@ <<< @ ||| @ >>>
END
print $ string;

AVISOS


O único ponto que encerra um formato também pode encerrar prematuramente uma mensagem de e-mail que passa por um
mala direta da Internet mal configurada (e com base na experiência, essa configuração incorreta é a regra,
não a exceção). Portanto, ao enviar o código de formato por e-mail, você deve recuá-lo para
que o ponto final do formato não está na margem esquerda; isso impedirá o corte de SMTP.

Variáveis ​​lexicais (declaradas com "meu") não são visíveis dentro de um formato, a menos que o formato
é declarado dentro do escopo da variável lexical.

Se o ambiente de um programa especifica uma localidade LC_NUMERIC e "usar localidade" está em vigor
quando o formato é declarado, o local é usado para especificar o caractere do ponto decimal em
saída formatada. A saída formatada não pode ser controlada por "usar localidade" no momento em que
write () é chamado. Consulte perllocale para uma discussão mais aprofundada sobre o tratamento de localidade.

Em strings que devem ser exibidas em um campo de texto de comprimento fixo, cada controle
caractere é substituído por um espaço. (Mas lembre-se do significado especial de "\ r" ao usar
modo de preenchimento.) Isso é feito para evitar o desalinhamento quando os caracteres de controle "desaparecem" em alguns
mídia de saída.

Use perlform online usando serviços onworks.net


Servidores e estações de trabalho gratuitos

Baixar aplicativos Windows e Linux

  • 1
    fre: ac - conversor de áudio gratuito
    fre: ac - conversor de áudio gratuito
    fre:ac é um conversor de áudio e CD gratuito
    ripper para vários formatos e codificadores.
    Possui MP3, MP4/M4A, WMA, Ogg
    Formato Vorbis, FLAC, AAC e Bonk
    Apoio, suporte, ...
    Baixar fre:ac - conversor de áudio grátis
  • 2
    matplotlib
    matplotlib
    Matplotlib é uma biblioteca abrangente
    para criar estático, animado e
    visualizações interativas em Python.
    Matplotlib torna as coisas fáceis e fáceis e
    coisa difícil ...
    Baixar Matplotlib
  • 3
    Homem-Bot
    Homem-Bot
    Escreva sua lógica de chatbot uma vez e
    conecte-o a um dos disponíveis
    serviços de mensagens, incluindo Amazon
    Alexa, Messenger do Facebook, Slack,
    Telegram ou até mesmo você...
    Baixar BotMan
  • 4
    Joplin
    Joplin
    Joplin é um software livre e aberto
    aplicativo de anotações e tarefas que
    pode lidar com um grande número de notas em
    Formato Markdown, organize-os em
    cadernos e ...
    Baixar Joplin
  • 5
    gerbv � um visualizador Gerber (RS-274X)
    gerbv � um visualizador Gerber (RS-274X)
    Gerbv é um arquivo Gerber de código aberto
    (somente RS-274X). Gerbv permite que você
    carregar vários arquivos uns sobre os outros,
    fazer medições na imagem exibida,
    etc ...
    Baixar gerbv � um visualizador Gerber (RS-274X)
  • 6
    Iômetro
    Iômetro
    Ferramenta de análise de desempenho de E/S.
    Público: desenvolvedores, informações
    Tecnologia, Ciência / Pesquisa, Sistema
    Administradores. Interface do usuário: Win32
    (MS Windows). Progr ...
    Baixar Iometer
  • Mais "

Comandos Linux

Ad