substrの振る舞い

Perl初心者のためのPerlノートです!

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo

◆ はじめに

本ページは、私がPerlを習得した時(いや習得中)のノートです。

ごく普通の言語(COBOL,C,Java,VB等)を知っている人が、Perlをやり始めるといろいろと悩むことがあります。

それは、

です。

本ページは、そのようなハードルを一つ一つクリアにしていけたらと思います。

そして、本ページが何かのお役に立てれば幸いです。では、ごゆっくりご覧ください。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

◆ サイト最新情報

◆ コンテンツ

2008-04-05 substrの振る舞い

substr関数は、全文字列中(expr)をオフセット(offset)から指定長分(length)を取得したり、それを置換文字列で置換したりします。

ただし、正規表現は使えない。

offsetやlengthをマイナスにする時は、要チェックです。


構文

substr(expr, offset, length)


テストサンプルソース(test.pl)
use strict;
use warnings;
my $string = "01234567890123456789";
my $str1 = substr($string, 0);
my $str2 = substr($string, 2);
my $str3 = substr($string, 2, 3);
my $str4 = substr($string, -1);
my $str5 = substr($string, -2);
my $str6 = substr($string, 0, -1);
my $str7 = substr($string, 0, -2);
my $str8 = substr($string,  3,  2);
my $str9 = substr($string,  3, -2);
my $str10 = substr($string, -3,  2);
my $str11 = substr($string, -3, -2);
print "\$string \t\t\t = 01234567890123456789\n";
print "substr(\$string, 0);      \t = $str1", "\n";
print "substr(\$string, 2);      \t = $str2", "\n";
print "substr(\$string, 2, 3);   \t = $str3", "\n";
print "substr(\$string, -1);     \t = $str4", "\n";
print "substr(\$string, -2);     \t = $str5", "\n";
print "substr(\$string, 0, -1);  \t = $str6", "\n";
print "substr(\$string, 0, -2);  \t = $str7", "\n";
print "substr(\$string,  3,  2); \t = $str8", "\n";
print "substr(\$string,  3, -2); \t = $str9", "\n";
print "substr(\$string, -3,  2); \t = $str10","\n";
print "substr(\$string, -3, -2); \t = $str11","\n";

テストサンプル実行結果
C:\test>perl test.pl
$string                          = 01234567890123456789
substr($string, 0);              = 01234567890123456789
substr($string, 2);              = 234567890123456789
substr($string, 2, 3);           = 234
substr($string, -1);             = 9
substr($string, -2);             = 89
substr($string, 0, -1);          = 0123456789012345678
substr($string, 0, -2);          = 012345678901234567
substr($string,  3,  2);         = 34
substr($string,  3, -2);         = 345678901234567
substr($string, -3,  2);         = 78
substr($string, -3, -2);         = 7

ちなみに、データの抽出だけでなく、substrを左辺に書けば代入もできる。

substr($string, 2, 3) = '234';

◆ おすすめ Perl本

■ 続・初めてのPerl 改訂版

『初めてのPerl』の次ぎに読むと吉です。

結構いいですが・・・、初心者にはちょっと難しいかもです。

■ 結城浩のPerlクイズ

この本には、ちゃいちゃんパパの小話しが載っています(謎)。

ある程度、Perlを理解している人には、たまらない内容になっています。さすが結城先生だな!

結城浩のPerlクイズ

■ 新版Perl言語プログラミングレッスン入門編

実は、私はまだ読んでいませんが、結城先生の本なので良くないはずがありません。

新版Perl言語プログラミングレッスン入門編

■ CGI&Perlポケットリファレンス (Pocket reference)

この本は、非常に役に立ちます。ちょっと調べるのに最適です。サンプルも説明も的を射ています。

CGI&Perlポケットリファレンス (Pocket reference)

■ Perlベストプラクティス

一読の価値有りだと思います。

Perlベストプラクティス

■ プログラミングPerl〈VOLUME1〉

ご存知、Perl本の聖書、ラクダ本(上)です。

■ プログラミングPerl〈VOLUME2〉

ご存知、Perl本の聖書、ラクダ本(下)です。

◆ おわりに

最後に、本ページが、何かのお役に立てれば幸いです。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo

人のよいところをどんどん見つけよう