このページは大阪弁化フィルタによって翻訳生成されたんですわ。

翻訳前ページへ


hashes should interpolate in double-quoted strings - dev.perl.org
The Wayback Machine - http://web.archive.org/web/20111110140518/http://dev.perl.org:80/perl6/rfc/237.html

hashes should interpolate in double-quoted strings

dev.perl.org
 

TITLE

hashes should interpolate in double-quoted strings

VERSION

  Maintainer: Nathan Torkington <gnat@frii.com>
  Date: 15 Sep 2000
  Mailing List: perl6-language-data@perl.org
  Number: 237
  Version: 1
  Status: Developing

ABSTRACT

"%hash" should expand to:

  join( $/, map { qq($_$"$hash{$_}) } keys %hash )

DESCRIPTION

Hashes do not interpolate in double-quote context in perl5. They should, because (a) scalars and arrays do, (b) it is a useful thing.

The problem has always been: how to separate the keys and values? I say use $" (the value that gets put between array elements in double-quote interpolation) between key and value, and $/ between each hash record.

A thorn is that $/ is the input record separator. It seems wrong to use it for output. But $\ is not set by default, and it seems unreasonable to have to set $\ (which affects the end of every print) just to interpolate hashes. I didn't relish making yet another special variable just for this, though.

When global variables like $" and $/ go away, I imagine they'll be replaced with lexically-scoped variations. This will work then, too.

The big problem is that % is heavily used in double-quoted strings with printf. I don't have a solution to this. In the end, this may be the definitive reason why hashes do not interpolate. And that's fine by me.

IMPLEMENTATION

A simple change to the tokenizer.

The perl526 translator could backslash every % in a double-quoted string.

REFERENCES

None.