Ticket #34838

groupmatchstrが初期化される

Eröffnet am: 2015-01-26 13:35 Letztes Update: 2015-01-30 17:14

Auswertung:
(Anonym)
Verantwortlicher:
(Keine)
Typ:
Status:
Geschlossen
Komponente:
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Keine
Datei:
Keine
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

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-Verlauf (3/6 Historien)

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

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

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

2015-01-26 14:02 Aktualisiert von: None
Kommentar

maya への返信

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


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

2015-01-26 15:21 Aktualisiert von: (del#1144)
Kommentar

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

以下補足

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

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

2015-01-26 15:28 Aktualisiert von: None
Kommentar

maya への返信

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

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

2015-01-30 17:14 Aktualisiert von: (del#1144)
  • Status Update from Offen to Geschlossen
  • Ticket Close date is changed to 2015-01-30 17:14
Kommentar

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

Dateianhangliste

Keine Anhänge

Bearbeiten

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