Script

Filter
2004-09-02

Sök och ersätt

Perl
Kommandoradsprogram som ändrar i textfiler
#!/usr/bin/perl -w
use strict;

print "\nProgrammet tar en in-fil, förändrar den,\n" .
      "och skriver resultatet till en ut-fil...\n";
print "Ange en in-fil: ";
chomp(my $infil =  <STDIN>);
print "Sök efter: ";
chomp(my $sok =    <STDIN>);
print "Ersätt med: ";
chomp(my $ersatt = <STDIN>);
print "Ange en ut-fil: ";
chomp(my $utfil =  <STDIN>);

open IN, "<$infil" or die "Kunde inte öppna in-fil: $!";
if (-e $utfil) {
    die "Fel: Filen finns redan.";
} else {
    open UT, ">$utfil" or die "Kunde inte öppna ut-fil: $!";
}

while (<IN>) {
    s/$sok/$ersatt/g;
    print UT;
}

close UT;
close IN; 
2004-09-02

Slumptal

Perl
Ett klassiskt gissa-tal-program
#!/usr/bin/perl
#use strict;

print "Gissa på ett tal mellan 1 och 100:\n";
$slumptal = int(1 + rand 100);
while (<STDIN>) {
    $gissningar++;
    chomp;
    if (/quit/i    /exit/i) {
        print "Hej då!\n";
        last;
    } elsif (/\D+/    $_ < 1    $_ > 100) {
        print "Inget giltigt tal!\n";
        $gissningar--;
    } elsif ($slumptal > $_) {
        print "Talet är större!\n";
    } elsif ($slumptal < $_) {
        print "Talet är mindre!\n";
    } elsif ($slumptal == $_) {
        print "Du gissade rätt på $gissningar gånger!\n";
        last;
    }
} 
2004-09-02

Ta emot formulärvärden

Perl
Standardscript för att ta emot, bearbeta och visa värden från inskickade formulär
#!/usr/bin/perl -wT

use strict;
use CGI;

my $q = new CGI;
print $q->header("text/html");

# Ser till så man kan använda:
# <input type="image" name="cmd ($1)" value="Skicka ($2)">
# ...Lägger till namnet utan .x och .y (dessa namn finns kvar)...
foreach ($q->param) {
    if (/(.*)\.x/) {
        $q->param($1, $2); 
    }
}
    
print<<END_TOP; 
<html>
<head>
<title>List of params</title>
</head>
<body>
<table border="1" cellpadding="10" cellspacing="0" align="center">
<tr>
<td colspan="2"><h2 align="center">Form data:</h2></td>
</tr>
END_TOP

# Enstaka värden kan hanteras så här:
my $namn = $q->param('namn');
print "<tr><td colspan=2>Ditt namn: $namn</td></tr>\n";

my($name, $value);
foreach $name ($q->param) {
    foreach $value ($q->param($name)) {
        print "<tr>\n",
        "<td>$name</td>\n",
        "<td>$value</td>\n",
        "</tr>\n";
    }
}

print<<END_BOTTOM;
</table>
</body>
</html>
END_BOTTOM
2004-09-02

Ställ in CGI.pm

Perl
Innan du skriver dina CGI bör du kolla följande...
# Kolla vilken version av perl:
$ perl -v

# Kolla om CGI.pm är installerad:
$ perl -MCGI -e 'print "CGI.pm version $CGI::VERSION\n'";

# Säkra CGI.pm mot DOS-attacker
# I filen  CGI.pm i ditt Perl library, ändra följande:
$POST_MAX = 102_400;  # 100 kB max uppladdn...
$DISABLE_UPLOADS = 1; # Stäng av all filuppladdn...

# Fixa så att CGI.pm hanterar både GET och POST på
# samma gång genom att avkommentera följande rad i CGI.pm:
# $query_string .= (length($query_string) ? '&' : '') . $ENV{'QUERY_STRING'} if defined $ENV{'QUERY_STRING'};

# Använd objektorienterat syntax, typ:
use strict;
use CGI;
my $q = new CGI;
my $name = $q->param("name");
2004-08-16

Dynamisk drop-down

Asp
Ett mycket vanligt script för att skapa en dropdown med värden från en accessdatabas
<select name="kat_id" size="1" style="width:120">
<option value="0">Alla</option>
<% sql = "select id, kat from kats order by kat"
set rs = conn.execute(sql)
do until rs.eof %>
    <option value="<%= rs("id") %>"<% if rs("id") = cint(kat_id) then response.write(" selected") %>>
    <%= server.HTMLencode(rs("kategori")) %></option>
    <% rs.movenext
loop
rs.close %>
</select> 
🙂