ユーザーのアバターの URL を持つマルチレベル ハッシュがあります。
「Jane Doe image 」でセルを作成しようとしていますが、コードを実行すると URL が変更されます。Embperlテンプレートに補間すると、
https://foo.com/useravatar?size=small&id=11111
になる
https://foo.com/useravatar%3Fsize%3Dsmall%26id%3D11111
ご覧のとおり、特殊文字がエンコードされるため、画像が見つかりません。これをどのように回避しますか?
use strict;
use warnings;
use Embperl qw( );
our $issue = {
avatar => {
url => 'https://foo.com/useravatar?size=small&id=11111',
},
};
my $template = <<'__EOI__';
[+ $issue->{avatar}{url} +]
<img src="[+ $issue->{avatar}{url} +]">
__EOI__
Embperl::Execute({
input => \$template,
package => __PACKAGE__,
});
これにより、次が生成されます。
https://foo.com/useravatar?size=small&id=11111
<img src="https://foo.com/useravatar%3Fsize%3Dsmall%26id%3D11111">
URL が属性の外側に挿入されると、src
正しくエスケープされます。しかし、src
属性の内部に挿入されると、壊れてしまいます。