#!/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; Filter
2004-09-02
Sök och ersätt
Perl
2004-09-02
Slumptal
Perl
#!/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
#!/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_BOTTOM2004-09-02
Ställ in CGI.pm
Perl
# 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
<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> 