perl初心者BLOG

2009-06-05

[][]length関数で文字列の長さを求める 00:38

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
$string = "abc";
print "文字列長:", length($string), "文字\n";

・実行結果

~$ ./hoge.pl
文字列長:3文字

日本語を使うとこうなる

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
$string = "あいう";
print "文字列長:", length($string), "文字\n";

・実行結果

~$ ./hoge.pl
文字列長:6文字

6/10追記:dankogai氏からのご指摘によれば、以下の方法はよくないそうです。

(ちなみに、この方法は独習Perl第二版という本に記載されていたものです。。)

日本語の文字数を正確に求めたい場合、use encodingを指定する

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
use encoding "euc-jp";
$string = "あいう";
print "文字列長:", length($string), "文字\n";

Windows環境だとたぶん、Shift_JISを指定すると思う。

・実行結果

~$ ./hoge.pl
文字列長:3文字

2009-06-01

[][]chomp関数 03:01

chomp関数は、改行のみを削除する。

つまり、最後の文字が改行でない場合、何もならない。

返却値として、取り除いた個数をかえすらしい

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
$string = "abc\n";
chomp($string);
print $string;

・実行結果

~$ ./hoge.pl
abc~$

[][]chop関数 02:53

chop関数は最後の文字(改行ふくむ)を削除する。

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
$string = "abc";
chop($string);
print $string, "\n";

・実行結果

~$ ./hoge.pl
ab

最後の文字が改行の場合、どうなるか?

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
$string = "abc\n";
chop($string);
print $string;

・実行結果

~$ ./hoge.pl
abc~$

[][]join関数 02:45

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
@arr = ("Tokyo", "Yokohama", "Oosaka");
$string = join(":", @arr);
print $string, "\n";

・実行結果

~$ ./hoge.pl
Tokyo:Yokohama:Oosaka

[][]split関数 02:32

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
$input = <STDIN>;
chomp($input);
@arr = split(/\s+/, $input);
foreach (@arr) {
        print "要素: ", $_, "\n";
}

・実行結果

~$ ./hoge.pl
This is a pen.
要素: This
要素: is
要素: a
要素: pen.

・サンプルコード(その2)

~$ cat hoge.pl
#!/usr/local/bin/perl
$input = <STDIN>;
chomp($input);
@arr = split(/\s+/, $input, 2);
foreach (@arr) {
        print "要素: ", $_, "\n";
}

※ split関数の第3パラメタに2を指定

・実行結果(その2)

~$ ./hoge.pl
This is a pen.
要素: This
要素: is a pen.

2009-05-31

[][]sprintf関数 22:34

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
$msg = sprintf("これは%s関数です\n", "sprintf");
print $msg;

・実行結果

~$ ./hoge.pl
これはsprintf関数です

[][]printf関数 22:31

・サンプルコード

~$ cat hoge.pl
#!/usr/local/bin/perl
printf("これは%s関数です\n", "printf");

・実行結果

~$ ./hoge.pl
これはprintf関数です