diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2000-07-26 17:53:31 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2000-07-26 17:53:31 +0000 |
commit | f4d13ee9d0b78f23038694a8d4237f00da3ad10c (patch) | |
tree | 108fd1ba1a50ecae4676be3f211323ef2dc63a40 | |
parent | ed8504609e65bf608915df5053decb2c1e5c56e9 (diff) | |
download | perl-f4d13ee9d0b78f23038694a8d4237f00da3ad10c.tar.gz |
Fix *foo{FORMAT}.
From: "H.Merijn Brand" <h.m.brand@hccnet.nl>
Subject: Re: Looking for a starting point (Mark-Jason?, Chip?, Jarkko?)
Date: Wed, 26 Jul 2000 19:51:02 +0200
Message-Id: <20000726194952.41DD.H.M.BRAND@hccnet.nl>
From: Graham Barr <gbarr@pobox.com>
Subject: Re: Looking for a starting point (Mark-Jason?, Chip?, Jarkko?)
Date: Wed, 26 Jul 2000 17:38:36 +0100
Message-ID: <20000726173836.L472@pobox.com>
p4raw-id: //depot/perl@6445
-rw-r--r-- | pp.c | 3 | ||||
-rw-r--r-- | sv.c | 7 | ||||
-rwxr-xr-x | t/op/gv.t | 18 |
3 files changed, 21 insertions, 7 deletions
@@ -599,6 +599,9 @@ PP(pp_gelem) case 'F': if (strEQ(elem, "FILEHANDLE")) /* XXX deprecate in 5.005 */ tmpRef = (SV*)GvIOp(gv); + else + if (strEQ(elem, "FORMAT")) + tmpRef = (SV*)GvFORM(gv); break; case 'G': if (strEQ(elem, "GLOB")) @@ -2831,6 +2831,13 @@ Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr) dref = (SV*)GvIOp(dstr); GvIOp(dstr) = (IO*)sref; break; + case SVt_PVFM: + if (intro) + SAVESPTR(GvFORM(dstr)); + else + dref = (SV*)GvFORM(dstr); + GvFORM(dstr) = (CV*)sref; + break; default: if (intro) SAVESPTR(GvSV(dstr)); @@ -11,7 +11,7 @@ BEGIN { use warnings; -print "1..40\n"; +print "1..41\n"; # type coersion on assignment $foo = 'foo'; @@ -97,15 +97,19 @@ $x = "ok 17\n"; %x = ("ok 19" => "\n"); sub x { "ok 20\n" } print ${*x{SCALAR}}, @{*x{ARRAY}}, %{*x{HASH}}, &{*x{CODE}}; +format x = +ok 21 +. +print ref *x{FORMAT} eq "FORMAT" ? "ok 21\n" : "not ok 21\n"; *x = *STDOUT; -print *{*x{GLOB}} eq "*main::STDOUT" ? "ok 21\n" : "not ok 21\n"; -print {*x{IO}} "ok 22\n"; -print {*x{FILEHANDLE}} "ok 23\n"; +print *{*x{GLOB}} eq "*main::STDOUT" ? "ok 22\n" : "not ok 22\n"; +print {*x{IO}} "ok 23\n"; +print {*x{FILEHANDLE}} "ok 24\n"; # test if defined() doesn't create any new symbols { - my $test = 23; + my $test = 24; my $a = "SYM000"; print "not " if defined *{$a}; @@ -131,7 +135,7 @@ print {*x{FILEHANDLE}} "ok 23\n"; # although it *should* if you're talking about magicals { - my $test = 29; + my $test = 30; my $a = "]"; print "not " unless defined ${$a}; @@ -173,4 +177,4 @@ print {*x{FILEHANDLE}} "ok 23\n"; } __END__ -ok 40 +ok 41 |