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: rdr@mdavcr.mda.ca (Randolph Roesler) Newsgroups: comp.infosystems.www Subject: Re: Forms (POST) and PERL Message-ID: <5515@map.mdavcr.mda.ca> Date: 29 Apr 94 00:01:38 GMT References: <2pk7r4INNrcc@srvr1.engin.umich.edu> 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%mda.ca@wimsey.bc.ca or rdr@mda.ca 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: aas@nora.nr.no (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: References: <2pk7r4INNrcc@srvr1.engin.umich.edu> <5515@map.mdavcr.mda.ca> Reply-To: Gisle.Aas@nr.no NNTP-Posting-Host: nora.nr.no In-reply-to: rdr@mdavcr.mda.ca's message of 29 Apr 94 00:01:38 GMT In article <5515@map.mdavcr.mda.ca> rdr@mdavcr.mda.ca (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 .