質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

解決済

1回答

1431閲覧

perl正規表現,置換ができません

Koh_

総合スコア27

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

0グッド

0クリップ

投稿2017/08/21 12:04

###前提・実現したいこと
テキストファイルA.txt中にある文字
「A」を「B」に置換し,
別のテキストファイルBへ出力したいのですが,
エラーが出てしまいます。

###発生している問題・エラーメッセージ

GLOB(0xa6bc54) 4294967295 これがA.txtの行数分吐き出されます

###該当のソースコード
open my $test1, "<", "A.txt";
open my $test2, ">", "B.txt";

while(my $line = <$test1>){
$line = ~ s/a/b/;
print "$test2 $line\n";
}

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記ではどうでしょうか。
4点修正を行いました。
0. 正規表現を扱うための演算子 "=~" は続けて記載する必要があります。
0. 同じ行に2つ以上の "a" がある場合は、/gをつけることで複数置換できます。
もし大文字小文字を区別したくない場合は、/gi等としてください。
0. 出力するための$test2は文字列の外に記載する必要があります。
0. $lineのあとに改行"\n"を記載していますが、そのままでは2重に改行してしまいます。

perl

1open my $test1, "<", "A.txt"; 2open my $test2, ">", "B.txt"; 3 4while(my $line = <$test1>){ 5$line =~ s/a/b/g; 6print $test2 "$line"; 7}

投稿2017/08/21 12:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Koh_

2017/08/26 00:25

おかげさまで解決できました! ご丁寧にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問