Ticket #34838

groupmatchstrが初期化される

Date d'ouverture: 2015-01-26 13:35 Dernière mise à jour: 2015-01-30 17:14

Rapporteur:
(Anonyme)
Propriétaire:
(Aucun)
Type:
État:
Atteints
Composant:
Priorité:
5 - moyen
Sévérité:
5 - moyen
Résolution:
Aucun
Fichier:
Aucun
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Détails

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'

Ticket History (3/6 Histories)

2015-01-26 13:35 Updated by: None
  • New Ticket "groupmatchstrが初期化される" created
2015-01-26 13:47 Updated by: (del#1144)
Commentaire

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

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

2015-01-26 14:02 Updated by: None
Commentaire

maya への返信

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


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

2015-01-26 15:21 Updated by: (del#1144)
Commentaire

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

以下補足

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

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

2015-01-26 15:28 Updated by: None
Commentaire

maya への返信

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

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

2015-01-30 17:14 Updated by: (del#1144)
  • État Update from Ouvert to Atteints
  • Ticket Close date is changed to 2015-01-30 17:14
Commentaire

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

Attachment File List

No attachments

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion