---
title: "Nybörjarhjälp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/perl-ruby/55680-nybörjarhjälp"
topic: "Perl & Ruby"
topic_url: "https://www.webforum.nu/amne/perl-ruby"
author: "pennypacker"
published: "2002-10-10T19:51:14.000Z"
updated: "2002-10-17T09:38:42.000Z"
replies: 2
views: 286
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/perl-ruby/55680-nybörjarhjälp"
---

# Nybörjarhjälp

## #1 — pennypacker, 2002-10-10T19:51Z

Jag är helt färsk på det här med Perl och skulle behöva lite hjälp.

Jag ska göra ett Perl-script som plockar fram environment-variablerna för den besökande användaren, detta vill jag sedan presentera i en tabell i ett html-dokument.

Min kod ser ut som följer:

\#!/usr/bin/perl

print "Content-type: text/html\\n\\n";

open (HTML, "\<tabell.html");
          foreach $key (sort(keys %ENV)) {
          	$namn = $key;
          	$varde = $ENV{$key};         
          }
          
          while($row = \<HTML\>) {
         	$row =\~ s/---(.\*?)---/eval $1/eg;
          	$row =\~ s/---(.\*?)---/eval $2/eg;
          	print "$row";
         }

Tabell.html ser ut såhär:

\<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"\>
\<html xmlns="http://www.w3.org/1999/xhtml"\>
  \<head\>
    \<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /\>
    \<title\>
      1c
    \</title\>
  \</head\>

  \<body\>

    \<h1\>
      Användaruppgifter
    \</h1\>
    \<table border="1"\>
      \<tr class="b1"\>
        \<td\>
	          Namn
	        \</td\>
	        \<td\>
	          Värde
	        \</td\>
	      \</tr\>
	      \<!---xxx---\>
	      \<tr\>
	        \<td\>
	          \---$namn---
	        \</td\>
	        \<td\>
	          \---$varde---
	        \</td\>
	      \</tr\>
	      \<!---xxx---\>
    \</table\>

  \</body\>
\</html\>

Problemet är att jag inte vet hur jag ska loopa i perl-scriptet för att alla environment-variabler ska skrivas ut i html-dokumentet. Som det är nu skrivs bara en förekomst av vardera $namn = $key; och $varde = $ENV{$key}; ut i tabellen.

Går detta att förstå?

Tacksam för hjälp.

Permalänk: https://www.webforum.nu/p/55680

## #2 — Jojoxx, 2002-10-13T19:51Z

Eftersom du först loopar igenom hela hashen $ENV och hela tiden ersätter variablerna $namn och $varde så blir det bara den sista som används. Sedan skall du i största möjliga mån låta bli att använda eval, speciellt när data du skickar till det kommer från externa källor. Du vet inte vilka hemska kommandon som kan komma att köras av ditt script (säkerhetslucka).

Så här kan scriptet se ut, hoppas att det är självförklarande:

```
#!/usr/bin/perl 

print "Content-type: text/html\n\n"; 
open (HTML, "<tabell.html"); 
$html=join('',<HTML>);
foreach $key (sort(keys %ENV)) { 
	$row="<tr><td>$key</td><td>$ENV{$key}</td></tr><!---xxx--->";
	$html =~ s/<!---xxx--->/$row/eg; 
} 
close(HTML);
print $html;
```

och  tabell.html lite ändrad;

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title> 
1c 
</title> 
</head> 

<body> 

<h1> 
Användaruppgifter 
</h1> 
<table border="1"> 
<tr class="b1"> 
<td> 
Namn 
</td> 
<td> 
Värde 
</td> 
</tr> 
<!---xxx---> 
</table> 

</body> 
</html>
```

Permalänk: https://www.webforum.nu/p/820146

## #3 — pennypacker, 2002-10-17T09:38Z

Tusen tack för hjälpen!

Permalänk: https://www.webforum.nu/p/825857

---

Tråden på webben: https://www.webforum.nu/amne/perl-ruby/55680-nybörjarhjälp
