Article 14455 of comp.infosystems.www:
Xref: feenix.metronet.com comp.infosystems.www:14455
Path: feenix.metronet.com!news.utdallas.edu!wupost!math.ohio-state.edu!cyber2.cyberstore.ca!vanbc.wimsey.com!mdavcr!rdr
From:
[email protected] (Randolph Roesler)
Newsgroups: comp.infosystems.www
Subject: Re: Forms (POST) and PERL
Message-ID: <
[email protected]>
Date: 29 Apr 94 00:01:38 GMT
References: <
[email protected]>
Organization: MacDonald Dettwiler, 13800 Commerce Parkway, Richmond, BC, Canada V6V 2J3
Lines: 80
I use the following perl stub as a bases for writing
post scripts in perl. No problems with newlines.
#!/usr/local/bin/perl
#
# stub to read stdin cgi post method and produce $values{field}
# for each field in the data steam
#
# 1994, Randy Roesler, MacDonald Detwiler
#
# Use at your own risk
@cgi_env = ( "SERVER_SOFTWARE","SERVER_NAME","GATEWAY_INTERFACE",
"SERVER_PROTOCOL","SERVER_PORT","REQUEST_METHOD",
"PATH_INFO","PATH_TRANSLATED","SCRIPT_NAME","QUERY_STRING",
"REMOTE_HOST","REMOTE_ADDR","REMOTE_USER","AUTH_TYPE",
"CONTENT_TYPE","CONTENT_LENGTH","HTTP_ACCEPT" );
@characters = (
"\x00","\x01","\x02","\x03","\x04","\x05","\x06","\x07",
"\x08","\x09","\x0A","\x0B","\x0C","\x0D","\x0E","\x0F",
"\x10","\x11","\x12","\x13","\x14","\x15","\x16","\x17",
"\x18","\x19","\x1A","\x1B","\x1C","\x1D","\x1E","\x1F",
"\x20","\x21","\x22","\x23","\x24","\x25","\x26","\x27",
"\x28","\x29","\x2A","\x2B","\x2C","\x2D","\x2E","\x2F",
"\x30","\x31","\x32","\x33","\x34","\x35","\x36","\x37",
"\x38","\x39","\x3A","\x3B","\x3C","\x3D","\x3E","\x3F",
"\x40","\x41","\x42","\x43","\x44","\x45","\x46","\x47",
"\x48","\x49","\x4A","\x4B","\x4C","\x4D","\x4E","\x4F",
"\x50","\x51","\x52","\x53","\x54","\x55","\x56","\x57",
"\x58","\x59","\x5A","\x5B","\x5C","\x5D","\x5E","\x5F",
"\x60","\x61","\x62","\x63","\x64","\x65","\x66","\x67",
"\x68","\x69","\x6A","\x6B","\x6C","\x6D","\x6E","\x6F",
"\x70","\x71","\x72","\x73","\x74","\x75","\x76","\x77",
"\x78","\x79","\x7A","\x7B","\x7C","\x7D","\x7E","\x7F",
"\x80","\x81","\x82","\x83","\x84","\x85","\x86","\x87",
"\x88","\x89","\x8A","\x8B","\x8C","\x8D","\x8E","\x8F",
"\x90","\x91","\x92","\x93","\x94","\x95","\x96","\x97",
"\x98","\x99","\x9A","\x9B","\x9C","\x9D","\x9E","\x9F",
"\xA0","\xA1","\xA2","\xA3","\xA4","\xA5","\xA6","\xA7",
"\xA8","\xA9","\xAA","\xAB","\xAC","\xAD","\xAE","\xAF",
"\xB0","\xB1","\xB2","\xB3","\xB4","\xB5","\xB6","\xB7",
"\xB8","\xB9","\xBA","\xBB","\xBC","\xBD","\xBE","\xBF",
"\xC0","\xC1","\xC2","\xC3","\xC4","\xC5","\xC6","\xC7",
"\xC8","\xC9","\xCA","\xCB","\xCC","\xCD","\xCE","\xCF",
"\xD0","\xD1","\xD2","\xD3","\xD4","\xD5","\xD6","\xD7",
"\xD8","\xD9","\xDA","\xDB","\xDC","\xDD","\xDE","\xDF",
"\xE0","\xE1","\xE2","\xE3","\xE4","\xE5","\xE6","\xE7",
"\xE8","\xE9","\xEA","\xEB","\xEC","\xED","\xEE","\xEF",
"\xF0","\xF1","\xF2","\xF3","\xF4","\xF5","\xF6","\xF7",
"\xF8","\xF9","\xFA","\xFB","\xFC","\xFD","\xFE","\xFF",
);
read( STDIN,$message,$ENV{CONTENT_LENGTH} );
$* = 1; # multi-line matching
@items = split( /&/, $message );
foreach $item ( @items ) {
local( $name,$value ) = split( /=/, $item );
while( $value =~ /^([^%]*)%(\d\d)(.*)$/ ) {
$values{$name} .= $1;
$values{$name} .= $characters[hex($2)];
$value = $3;
}
$values{$name} .= $value;
}
$* = 0; # single line matching
--
Randy Roesler MacDonald Dettwiler & Assc.
Ph. 604-278-3411 Fax. 604-278-2936 13800 Commerce Parkway,
email ...!uunet!van-bc!mdavcr!rdr Richmond BC Canada
rdr%
[email protected] or
[email protected] V6V 2J3
Article 14476 of comp.infosystems.www:
Xref: feenix.metronet.com comp.infosystems.www:14476
Path: feenix.metronet.com!news.utdallas.edu!wupost!math.ohio-state.edu!howland.reston.ans.net!EU.net!sunic!ugle.unit.no!trane.uninett.no!nntp.uio.no!nntp.uio.no!aas
From:
[email protected] (Gisle Aas)
Newsgroups: comp.infosystems.www
Subject: Re: Forms (POST) and PERL
Date: 29 Apr 1994 09:36:25 GMT
Organization: Norwegian Computing Center, Oslo, Norway
Lines: 50
Message-ID: <
[email protected]>
References: <
[email protected]> <
[email protected]>
Reply-To:
[email protected]
NNTP-Posting-Host: nora.nr.no
In-reply-to:
[email protected]'s message of 29 Apr 94 00:01:38 GMT
In article <
[email protected]>
[email protected] (Randolph Roesler) writes:
> @characters = (
> "\x00","\x01","\x02","\x03","\x04","\x05","\x06","\x07",
> "\x08","\x09","\x0A","\x0B","\x0C","\x0D","\x0E","\x0F",
> "\x10","\x11","\x12","\x13","\x14","\x15","\x16","\x17",
> "\x18","\x19","\x1A","\x1B","\x1C","\x1D","\x1E","\x1F",
> "\x20","\x21","\x22","\x23","\x24","\x25","\x26","\x27",
> "\x28","\x29","\x2A","\x2B","\x2C","\x2D","\x2E","\x2F",
> "\x30","\x31","\x32","\x33","\x34","\x35","\x36","\x37",
> "\x38","\x39","\x3A","\x3B","\x3C","\x3D","\x3E","\x3F",
> "\x40","\x41","\x42","\x43","\x44","\x45","\x46","\x47",
> "\x48","\x49","\x4A","\x4B","\x4C","\x4D","\x4E","\x4F",
> "\x50","\x51","\x52","\x53","\x54","\x55","\x56","\x57",
> "\x58","\x59","\x5A","\x5B","\x5C","\x5D","\x5E","\x5F",
> "\x60","\x61","\x62","\x63","\x64","\x65","\x66","\x67",
> "\x68","\x69","\x6A","\x6B","\x6C","\x6D","\x6E","\x6F",
> "\x70","\x71","\x72","\x73","\x74","\x75","\x76","\x77",
> "\x78","\x79","\x7A","\x7B","\x7C","\x7D","\x7E","\x7F",
> "\x80","\x81","\x82","\x83","\x84","\x85","\x86","\x87",
> "\x88","\x89","\x8A","\x8B","\x8C","\x8D","\x8E","\x8F",
> "\x90","\x91","\x92","\x93","\x94","\x95","\x96","\x97",
> "\x98","\x99","\x9A","\x9B","\x9C","\x9D","\x9E","\x9F",
> "\xA0","\xA1","\xA2","\xA3","\xA4","\xA5","\xA6","\xA7",
> "\xA8","\xA9","\xAA","\xAB","\xAC","\xAD","\xAE","\xAF",
> "\xB0","\xB1","\xB2","\xB3","\xB4","\xB5","\xB6","\xB7",
> "\xB8","\xB9","\xBA","\xBB","\xBC","\xBD","\xBE","\xBF",
> "\xC0","\xC1","\xC2","\xC3","\xC4","\xC5","\xC6","\xC7",
> "\xC8","\xC9","\xCA","\xCB","\xCC","\xCD","\xCE","\xCF",
> "\xD0","\xD1","\xD2","\xD3","\xD4","\xD5","\xD6","\xD7",
> "\xD8","\xD9","\xDA","\xDB","\xDC","\xDD","\xDE","\xDF",
> "\xE0","\xE1","\xE2","\xE3","\xE4","\xE5","\xE6","\xE7",
> "\xE8","\xE9","\xEA","\xEB","\xEC","\xED","\xEE","\xEF",
> "\xF0","\xF1","\xF2","\xF3","\xF4","\xF5","\xF6","\xF7",
> "\xF8","\xF9","\xFA","\xFB","\xFC","\xFD","\xFE","\xFF",
> );
>
> while( $value =~ /^([^%]*)%(\d\d)(.*)$/ ) {
> $values{$name} .= $1;
> $values{$name} .= $characters[hex($2)];
> $value = $3;
> }
It is much shorter to write:
$value =~ s/%([\da-f][\da-f])/pack("C",hex($1))/gei;
And it even works!
--
� Gisle Aas - Norsk Regnesentral <
[email protected]>