機能 chomp() Perl

は、Perlプログラミング言語を搭機能 chomp(). この機能が文字列です。 最も簡単なケースでは、機能 chomp() を削除し、その最終 シンボル \nAC が渡された引数の機能です。

次に例を示します。

▶ Run
#!/usr/bin/perl

my $string = "ASDF\n";

chomp($string);

print "'$string'";

このプログラムはテキストが表示され 'ASDF'.

  • の場合変数の値な \nの値は変わりません
  • の場合変数を含む複数の文字 \n に削除されます文字 \n

引数

この機能は chomp を渡される引数の機能が動作 デフォルトの変数 $_:

▶ Run
#!/usr/bin/perl

$_ = "123\n";

chomp;

print "'$_'";

その場合の場合変数 $_undef および使用 use warnings;、警告:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

chomp;
Use of uninitialized value $_ in scalar chomp at script.pl line 6.

機能 chomp() とすることができますscalars、配列ハッシュ. の場合はハッシュ の機能のみに価値のキーのキー自体の変更はありません。

関数の引数に chomp() についての変数となります。 の場合 みこの機能は文字列、エラーおよびプログラムの実行 することができなくなります:

▶ Run
#!/usr/bin/perl

chomp("ASDF\n"); # Error!
Can't modify constant item in chomp at script.pl line 3, near ""ASDF\n")"
Execution of script.pl aborted due to compilation errors.

戻り値

機能 chomp() を常に整数を返しま以上 0. この機能を返します 0、これではありませんでした。 数により 0 手段どのくらいで変化します。

ここでは一例ですの状態での機能 chomp() 件数を返却しま 2:

▶ Run
#!/usr/bin/perl

my @arr = ("ASDF\n", "QWERTY\n");
print chomp(@arr);

ここでは一例を使用する返り値に満たな コードがあった場合の代替品または交換ませんでした:

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $string = "ASDF\n";

if (chomp($string)) {
    say 'Removed \n';
} else {
    say 'String is unchanged';
}

print "'$string'";

変数 $/

機能 chomp() を削除し、そのシンボルが含まれているためグローバル 変数 $/. デフォルトでは、この変数はシンボル \n. ですがこの 変数のその他のシンボルとしての機能 chomp() はそれを削除します。 次に例を示します。

▶ Run
#!/usr/bin/perl

$/ = "F";

my $string = "ASDF";

chomp($string);

print "'$string'";

プログラムをテキストを表示 'ASD'.

その場合の場合、変数は、空文字列($/ = '';), その後 chomp() を削除します単一の末尾 \nは、すべての文字 \n 末ます。

標準使用

非常に多くの機能 chomp() を読取ラインによる線 からファイルです。 加工から文字列をファイルが多いのが便利なこのラインではない このシンボル \n 末のライン:

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use open qw(:std :utf8);

my $file_name = 'a.csv';

open FILE, '<', $file_name or die $!;

while my $line (<FILE>) {
    chomp($line);
    print "Parsing line $line";
}

削除文字をすべて \n の末にライン

通常の関数 chomp() を削除し一つの文字 \n 末のライン:

▶ Run
#!/usr/bin/perl

my $string = "Line1\nLine2\n\n\n";

chomp($string);

print "'$string'";

その結果、

'Line1
Line2

'

う方法にはいくつかの種類があり方を除去することができすべての記号 \n の末ます。

ここでは例正規表現を使用して:

▶ Run
#!/usr/bin/perl

my $string = "Line1\nLine2\n\n\n";

$string =~ s/\n*$//;

print "'$string'";

別の言い方をすべて削除し後続スペースが設定値 変数 $/ 、空の文字列:

▶ Run
#!/usr/bin/perl

$/ = '';

my $string = "Line1\nLine2\n\n\n";

chomp($string);

print "'$string'";

の利用の正規表現のより良いのでは確実に変わりません グローバル変数に影響を及ぼコードその他 部品のプログラム。

公式文書

ここでは、出力のコマンド perldoc -f chomp:

       chomp VARIABLE
       chomp( LIST )
       chomp   This safer version of "chop" removes any trailing string that
               corresponds to the current value of $/ (also known as
               $INPUT_RECORD_SEPARATOR in the "English" module).  It returns
               the total number of characters removed from all its arguments.
               It's often used to remove the newline from the end of an input
               record when you're worried that the final record may be missing
               its newline.  When in paragraph mode ("$/ = """), it removes
               all trailing newlines from the string.  When in slurp mode ("$/
               = undef") or fixed-length record mode ($/ is a reference to an
               integer or the like; see perlvar) chomp() won't remove
               anything.  If VARIABLE is omitted, it chomps $_.  Example:

                   while (<>) {
                       chomp;  # avoid \n on last field
                       @array = split(/:/);
                       # ...
                   }

               If VARIABLE is a hash, it chomps the hash's values, but not its
               keys.

               You can actually chomp anything that's an lvalue, including an
               assignment:

                   chomp($cwd = `pwd`);
                   chomp($answer = );

               If you chomp a list, each element is chomped, and the total
               number of characters removed is returned.

               Note that parentheses are necessary when you're chomping
               anything that is not a simple variable.  This is because "chomp
               $cwd = `pwd`;" is interpreted as "(chomp $cwd) = `pwd`;",
               rather than as "chomp( $cwd = `pwd` )" which you might expect.
               Similarly, "chomp $a, $b" is interpreted as "chomp($a), $b"
               rather than as "chomp($a, $b)".

その他の記事