チケット #34838

groupmatchstrが初期化される

登録: 2015-01-26 13:35 最終更新: 2015-01-30 17:14

報告者:
(匿名)
担当者:
(未割り当て)
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
優先度:
5 - 中
重要度:
5 - 中
解決法:
なし
ファイル:
なし
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

Tera Term Version 4.82 Windows 7orXP で使用しています。
strsplitでgroupmatchstrに分けた後に、strreplaceにて文字列を変換すると
groupmatchstrの中身が初期化されてしまいます。

test1 = 'a,b,c'
strsplit test1 ','
sss2 = 'YYYY.tgz'

strreplace sss2 1 '.tgz' '.gz'

messagebox groupmatchstr1 'test'
messagebox groupmatchstr2 'test'
messagebox groupmatchstr3 'test'
messagebox sss2 'test'

チケットの履歴 (6 件中 3 件表示)

2015-01-26 13:35 更新者: None
  • 新しいチケット "groupmatchstrが初期化される" が作成されました
2015-01-26 13:47 更新者: (del#1144)
コメント

strreplace コマンドは内部で正規表現を使用しているため groupmatchstr システム変数をクリアしています。

その動作はいまのところ仕様なので、必要ならユーザ変数に代入して保持してください。

2015-01-26 14:02 更新者: None
コメント

maya への返信

strreplace コマンドは内部で正規表現を使用しているため groupmatchstr システム変数をクリアしています。 その動作はいまのところ仕様なので、必要ならユーザ変数に代入して保持してください。


ご回答ありがとうございます。仕様動作であることは理解いたしました。
もう少し詳細を教えていただきたいのですが、strreplaceコマンド内部で正規表現を
使用していることがなぜgroupmatchstrの初期化につながるのでしょうか?

2015-01-26 15:21 更新者: (del#1144)
コメント

おおざっぱに Perl の感覚で言うと、正規表現でマッチしたら $1 には新しい結果が代入され、その前に $1 に入っていた内容は参照できないのと同じ、という感覚です。

以下補足

strreplace コマンドは strmatch コマンドと同じ内部関数を使用しています。なので、そんなの strmatch コマンドの都合じゃないか、と感じられる実装になっているとは思います。いまのまま実装を変更しないなら、ドキュメントに「groupmatchstrはクリアさます」との注意書きを追加します。

マクロ言語には、明示的に指定された変数に結果を返すのではなく、暗黙的にシステム変数に結果を返すコマンドが複数あります。そのシステム変数の内容がどのコマンドを実行されるまで生き延びるかというドキュメントは整備されておらず、開発者としてもソースコードを見るしかないのが現状です。

2015-01-26 15:28 更新者: None
コメント

maya への返信

おおざっぱに Perl の感覚で言うと、正規表現でマッチしたら $1 には新しい結果が代入され、その前に $1 に入っていた内容は参照できないのと同じ、という感覚です。 以下補足 strreplace コマンドは strmatch コマンドと同じ内部関数を使用しています。なので、そんなの strmatch コマンドの都合じゃないか、と感じられる実装になっているとは思います。いまのまま実装を変更しないなら、ドキュメントに「groupmatchstrはクリアさます」との注意書きを追加します。 マクロ言語には、明示的に指定された変数に結果を返すのではなく、暗黙的にシステム変数に結果を返すコマンドが複数あります。そのシステム変数の内容がどのコマンドを実行されるまで生き延びるかというドキュメントは整備されておらず、開発者としてもソースコードを見るしかないのが現状です。

ご回答ありがとうございました。
お手数ですが、ドキュメントに追加の件はよろしくお願い致します。
問題は解決いたしましたので、本件のクローズよろしくお願いします。

2015-01-30 17:14 更新者: (del#1144)
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2015-01-30 17:14 に更新されました
コメント

r5769 にてドキュメントを修正しました。

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする