• ベストアンサー

文字列$xから最初の,以降を取り除く

ために $x=~s/,[\w\s]*$//; としましたがうまくいきません どうしたら取り除くことができるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

複数行を一気に置換でしたか・・・ では s修飾子 が必要です。 $x =~ s/,.*//; ↓ $x =~ s/,.*//s;

guuman
質問者

お礼

ありがとうございます 解決しました

その他の回答 (2)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

> $x=~s/,.*//m; オプションmは複数行として扱うようにするためのオプションです。 単一行として扱わせるにはオプションにsを使いましょう。

guuman
質問者

お礼

ありがとうございます mとsと頭の中で入れ替わってました

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

$x=~s/,[\w\s]*$//; これだと , の後に記号などが存在するとマッチしませんので $x =~ s/,.*//; これだけで大丈夫だと思います。

guuman
質問者

補足

ありがとうございます $x="abc,\n cde\$\@\\ ok\t\r\f\n "; $x=~s/,.*//m; print "[$x]\n"; で [abc] となりません [abc] を出したいのですが…

関連するQ&A