2010-10-21 11 views
23
$ cat temp.pl 
use strict; 
use warnings; 

print "1\n"; 
print "hello, world\n"; 

print "2\n"; 
print "hello, 
world\n"; 

print "3\n"; 
print "hello, \ 
world\n"; 

$ perl temp.pl 
1 
hello, world 
2 
hello, 
world 
3 
hello, 
world 
$ 

Aby mój kod był czytelny, chcę ograniczyć liczbę kolumn do 80 znaków. Jak mogę podzielić linię kodu na dwie części bez żadnych skutków ubocznych?Jaki jest prawidłowy sposób na złamanie linii kodu Perla na dwóch?

Jak przedstawiono powyżej, prosty lub \ nie działa.

Jaki jest prawidłowy sposób to zrobić?

Odpowiedz

36

W Perl, powrót karetki będą służyć w każdym miejscu, gdzie regularna przestrzeń robi. Backslashes nie są używane jak w niektórych językach; po prostu dodaj CR.

Można złamać strun się na wielu liniach z konkatenacji lub lista operacji:

print "this is ", 
    "one line when printed, ", 
    "because print takes multiple ", 
    "arguments and prints them all!\n"; 
print "however, you can also " . 
    "concatenate strings together " . 
    "and print them all as one string.\n"; 

print <<DOC; 
But if you have a lot of text to print, 
you can use a "here document" and create 
a literal string that runs until the 
delimiter that was declared with <<. 
DOC 
print "..and now we're back to regular code.\n"; 

można przeczytać tutaj dokumenty w perldoc perlop.

+1

Należy również zauważyć, że tekst zwracany przez dziedzinę zawiera znaki nowej linii, ponieważ są one zapisywane, podczas gdy te połączone nie są –

1

Zastosowanie ., operator konkatenacji ciąg:

$ perl 
print "hello, " . 
"world\n";ctrl-d 
hello, world 
$ 
+0

'print' był tylko przykład, że użyłem. Czy istnieje ogólna * funkcja wyłącznika linii * dla Perla? – Lazer

+0

@Lazer: Jeśli chcesz, aby ciąg wielowierszowy był pojedynczą linią, użyj '.'. W przeciwnym razie perl jest wolną formą i możesz umieścić znak nowej linii w dowolnym miejscu. – imgx64

4

To dlatego, że jesteś w środku łańcucha. Można podzielić ciągi i złączyć za pomocą . jak:

print "3\n"; 
print "hello, ". 
"world\n"; 
9

Jeszcze jedno z Perl Best Practices:

Łamanie długich kolejkach: Przerwa długich wyrażeń przed operatora. jak

push @steps, $step[-1] 
        + $radial_velocity * $elapsed_time 
        + $orbital_velocity * ($phrase + $phrase_shift) 
        - $test 
        ; #like that 
+0

* Nienawidziłem * tego stylu przed przeczytaniem tej książki. Widziałem to na skryptach typu clist mainframe, ale Damian dobrze opowiedział, jak szybko można zobaczyć, co się dzieje. A teraz używam go cały czas. +1 dla PBP! – Axeman

Powiązane problemy