Qual é a diferença entre um único e aspas duplas em Perl

Na linguagem de programação Perl para criar a linha no código do programa, você pode usar simples ' ou aspas duplas ".

Entre eles, há uma diferença. Em uma única aspas funcionam só эскейп seqüência \\ e \', entre aspas, exceto os dois funcionam ainda outros эскейп seqüência. E somente quando você usar aspas os nomes de variáveis desdobrar-se em valores (o que acontece interpolação). Mais detalhes.

Total

E de aspas simples e aspas duplas em uma linguagem de programação Perl são usados para descrever a linha de código do programa (linhas de texto do programa são chamados de "literais de seqüência de caracteres"). Aqui está um exemplo:

▶ Run
#!/usr/bin/perl

my $str1 = 'Hello, world!';
my $str2 = "Hello, world!";

Neste programa, nós criamos duas variáveis e cada um deles se apropriaram de uma linha. Neste exemplo, não há nenhuma diferença entre o uso de duplas e aspas simples, as linhas que recebemos e, no primeiro, e no segundo caso, é completamente o mesmo.

Barra invertida

Mais uma coisa em comum na utilização simples e aspas duplas é como agir se necessário para que a cadeia foi o símbolo de barra invertida \. Se você precisar criar uma linha com este símbolo, o cadeia literal precisa escrever dois retornos de corte \\. A resultante de comandos será uma barra invertida. Aqui está um exemplo:

▶ Run
#!/usr/bin/perl

my $str1 = '\\';
my $str2 = "\\";

print $str1, "\n";
print $str2, "\n";

Este programa irá imprimir na tela:

\
\

As aspas na linha de

A primeira diferença entre o único e aspas duplas é o que você precisa fazer para criar uma linha de o que há de aspas simples ou duplas.

Com a ajuda de aspas é muito fácil criar uma cadeia em que há aspas duplas: '"'. E se você precisa fazer uma linha em que há uma aspa simples, será necessário gravar com o uso de dois caracteres: reverso slash \ e aspas. '\'' — aqui é um literal de seqüência de caracteres criará uma seqüência de um caractere "aspas simples".

No caso de aspas duplas — tudo vice-versa. É conveniente criar uma cadeia de caracteres com aspas simples "'", e para colocar em uma linha dupla aspas precisa escrever antes dela barra invertida (isto é chamado de "selecionar") "\"".

O uso de caracteres especiais

Quando você usa caracteres de aspas simples, existem apenas dois combinam de caracteres, que se transformam em um único personagem. É, como já vimos antes, dois retornos de corte \\ — eles se transformam em um pântano; e barra invertida e o apóstrofo \' — é transformado em um símbolo de "aspas simples".

Mas quando você usar aspas duplas, há ainda mais desses agregados de caracteres (normalmente referido como "эскейп seqüência"). A mais conhecida e utilizada é a combinação de caracteres \n. \n, em entre aspas duplas se transforma em um símbolo de avanço de linha. Quando você usa caracteres de uma única as aspas print 'ASDF\nQWERTY'; exibirá ASDF\nQWERTY, e se você usar aspas duplas print "ASDF\nQWERTY"; aparece a tela de duas linhas:

ASDF
QWERTY

A outra usada эскейп uma sequência é \t, quando se utiliza entre aspas, isso se traduz em um caractere de tabulação. Não é muito comum, mas é mais usado \b, este carácter especial apaga o caracter anterior (você pode usar para criar é muito simples animações no console). Existe uma certa quantidade de эскейп sequências, mas eles são pouco usados.

A interpolação de variáveis

Se uma linha é criada utilizando aspas duplas para escrever o nome da variável, a cadeia de caracteres em vez de um nome aparecer o valor dessa variável (quando você usar aspas na seqüência será o nome).

Esta característica da linguagem é frequentemente utilizado.

▶ Run
#!/usr/bin/perl

my $var = 'John';

my $str1 = 'Hello, $var';
my $str2 = "Hello, $var";

print $str1, "\n";
print $str2, "\n";

Este programa irá imprimir na tela:

Hello, $var
Hello, John

A linha $str1 nós criamos com a ajuda de aspas e em linha contém exatamente ao que foi escrito em um contexto string literal — 'Hello, $var'. E na linha $str2 nome da variável $var заменилось no valor dessa variável.

Por favor, note que rodam somente escalares e matrizes:

▶ Run
#!/usr/bin/perl

my $var = 'John';
my @arr = ('one', 'two');
my %h = (
    a => 1,
);

sub my_sub {
    return 12;
}

print "$var @arr %h &my_sub";

Este programa irá imprimir na tela o texto John one two %h &my_sub. Escalar $var e a matriz @arr virou-se em valores, e o hash %h e saba my_sub — não.

Recomendação

Em muitos casos, para criar a seqüência de caracteres literais ainda o que usar e simples e entre aspas duplas funcionará da mesma maneira. Recomendação esta — se para a cadeia do símbolo, ainda que usar o utilize aspas simples.

Outros artigos