文字列処理関数

perlでは文字列の一部を切り出すときにはsubstr関数を使うようで、
例えば'Good morning'という文字列の最初の4文字を得るときは

my $s = substr('Good morning', 0, 4);
print $s;

とすればGoodと返される。
pythonで同じ処理をするにはリストの要素を取り出すときと同じ要領で、

s = "Good morning"[0:4]
print s

とすれば良いみたい。
perlで次のようにsubstr関数に与える最後の引数を省略すると、

my $s = substr('Good morning', 5);
print s

5番目の文字以降全部のmorningが返される。
pythonでも

s = "Good morning"[5:]
print s

とすれば同じ結果が得られる。
perlで文字列中の特定の文字列の位置を調べるには関数indexを使うようで、

print index('Good morning', 'ing'), "\n";

とすれば9と返される。
pythonでは文字列メソッドを使って、

"Good morning".index("ing")

または

"Good morning".find("ing")

とすれば良いみたい。
この例ではindexメソッドでも、findメソッドでも同じ結果が得られるけど
両者はイコールと考えてよいのだろうか?
perlでは
$str =~ s/morning/evening/;
という文を使って変数 $str内の'morning'を'evening'に置換することができるようで、

my $str = 'Good morning';
$str =~ s/morning/evening/;
print "\$str = $str\n";

とすれば

$str = Good evening

と出力される。
pythonではreplaceメソッドを使って、

str = "Good morning"
str = str.replace("morning", "evening")
print "str = %s" %str

とすれば

str = Good evening

と出力できる。