さて、私は気が狂っている問題を抱えています。次を使用して正規表現で部分文字列を抽出しようとしています:
($var) = $data =~ m/regex/;
動作していますが、返される「文字列」は実際の substr とまったく同じではありません。文字列を出力すると、実際の substr のように見えますが、if ($var eq "substr") でチェックしても true は返されません。また、 $var .= ".."; を使用して末尾に何かを追加しようとすると、気付きました。($var が "hello" の場合) "..llo" が表示されます。
これは何を返していますか?
それが違いを生む場合、私はこれをLinuxで実行しています。そうなるとは思いませんが、これと同じコードが Windows でも機能します。
コードの例を次に示します。
$datatxt contains
..
udir=/home/me/
..
use File::Read;
my $data = read_file( {skip_comments => 1}, $datatxt);
($udir) = $data =~ m/udir=(.*)/;
print $udir; #prints /home/me/
print ".".$udir."."; #prints ..home/me/
if ($udir ne "/home/me/") {
print "not equal"; #prints...
}