私はハッシュの値から全ての改行(\n
)を除去しようとした:ハッシュ値からすべての改行を削除するにはどうしたらいいですか?
my %var_h = ( "ID" => " This is Test
This is new line TEST
newline Test end ");
にはどうすれば%var_h
の値から、すべての新しい行を削除することができますか?
私はs/\\n//g
を試しましたが、うまく動作しませんでした。
私はハッシュの値から全ての改行(\n
)を除去しようとした:ハッシュ値からすべての改行を削除するにはどうしたらいいですか?
my %var_h = ( "ID" => " This is Test
This is new line TEST
newline Test end ");
にはどうすれば%var_h
の値から、すべての新しい行を削除することができますか?
私はs/\\n//g
を試しましたが、うまく動作しませんでした。
s:\n::g for values %var_h;
トリックを行う必要があります。
+1理由のためにステートメント修飾子が存在するので、 –
これは(値がコピーされないという点で)うまくいきましたが、もっと簡単な例でテストしました。 –
@Unknown Google:はい、値はコピーされず、エイリアスにも付けられます。キーはコピーします。 – ysth
あなたは何に対して代替を実行していますか?あなただけの値を修正したいように見えるので、私はvalues
キーワードを使用します。
for my $value (values %var_h) {
$value =~ s/\n//g;
}
(OPの要求で)代替私はそれがはるかに少ないクリアな見つけるのにマップやスライスを使用することです:
@var_h{keys %var_h} = map { s/\n//g } values %var_h;
ハッシュ値で.. – joe
これを行うには他の方法があります – joe
私は2番目の方法を追加しました。しかし、 'values'を使わないでメソッドを使いたいですか? – Telemachus
他のすべての解決策は、ハッシュのすべての値から\ nを削除します。
これが必要かどうかわかりません。
だから、あなたが持っているこのいずれかの値からのみ削除する:
$var_h{'ID'} =~ s/\r?\n//g;
技術的にはS/\ N // gは十分なはずですが、私は、\ rを追加する習慣がありますか?その前に、それはWindowsスタイルの新しい行も処理します。
それは良い点です。私は1つの値が単なる例であると仮定していました。そして、彼は望ましくない改行を持っていたか持っていなかったかを事前に知ることができなかったでしょう。 – Telemachus
余分な文字はどうやって入りますか? –
エルフ?私は、改行がそこにたどり着いたことをあまり考えなかった。私の頭の上から離れて:悪いユーザー入力、正規表現のキャプチャが間違って、完全なcussednessとプログラマーのエラー。 – Telemachus
私はあなたの問題があなたが欲しくないときにあなたが「エスケープ」していたということを見ています。 (これが質問のタイプミスでない限り) – Telemachus