web-dev-qa-db-ja.com

Perlコードの行を2つに分割する正しい方法は何ですか?

$ 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
$

コードを読みやすくするために、列の数を80文字に制限します。副作用なしでコード行を2つに分割するにはどうすればよいですか?

上記のように、シンプルな  または \ 動作しません。

これを行う正しい方法は何ですか?

27
Lazer

Perlでは、キャリッジリターンは通常のスペースが存在するあらゆる場所で機能します。一部の言語のようにバックスラッシュは使用されません。追加するだけ CR

連結またはリスト操作を使用して、文字列を複数行に分割できます。

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";

ここでのドキュメントについては perldoc perlop で読むことができます。

43
Ether

Perl Best Practices からもう1つ:

長い行の分割:演算子の前に長い式を分割します。

Push @steps, $step[-1]
                  + $radial_velocity * $elapsed_time
                  + $orbital_velocity * ($phrase + $phrase_shift)
                  - $test
                  ; #like that
11
Nikhil Jain

これは、文字列の中にいるためです。次のように.を使用して、文字列を分割して連結できます。

print "3\n";
print "hello, ".
"world\n";
5
codaddict

使用する .、文字列連結演算子:

$ Perl
print "hello, " .
"world\n";ctrl-d
hello, world
$
1
imgx64