Schrift
[thread]471[/thread]

perl regex noob: mini script



<< >> 3 Einträge, 1 Seite
Gast Gast
 2005-04-01 19:24
#4732 #4732
hi,

bin neuling in perl und versuche ein script zu bauen.

Das ganze mache ich auf einem LFS 6.0 (Mit aller nötiger sw).

Die folgende Regex macht aus der aus dem HTML Formular uebergebenen Umgebungsvariable QUERY_STRING, das 'name=' wech.

~s/name=//g

Das script soll shell commands ausfuehren und nun suche ich eine regex, die mir die Parameter der shellkommandos die ich in die Form eingebe mit uebersetzt.

Habe mal folgende Zeile in das Script eingefuegt:

#print "$name\n";

Dadurch sehe ich, das die die Leerstellen zwischen dem Befehl und dem Parameter, die Lehrstelle als + interpretieren.

Das versuche ich dann durch folgende Regex zu filtern:

$name=~s/ +/ /g;


Das geht aber nicht.

Hat vielleicht einer ne Ahnung wie ich das mache.

Hier noch das ganze cgi-pseudo script :o)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl -w


my $name = $ENV{'QUERY_STRING'};
$shell=$name;
$name=~s/name=//g;

$name=~s/ +/ /g;

print "Content-type: text/html\n\n";
print "<html>\n";
print "<h2>Shell:</h2>\n";
print "<hr>\n<pre>\n";
print "$name\n";
print `$name`;
print "</pre>\n<hr>\n</html>";



gruesse

karan

edit pq: code-tags hinzugefügt\n\n

<!--EDIT|pq|1112370781-->
Ishka
 2005-04-01 19:46
#4733 #4733
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
use CGI;

my $cgi=CGI::->new;
my %form=$cgi->Vars;


und in %form stehen dann alle Parameter, was den Vorteil hat, daß man sich über all die Probleme keine Gedanken machen muß und es oft genug getestet ist, daß man Fehler in dem Teil ausschließen kann. Auf die einzelnen Werte des Hashes hast du mit $form{name} Zugriff.

Außerdem muß ich dich, bei dem wast du vorhast noch warnen:
man sollte _nie_ etwas, was man vom Benutzer kriegt einfach mal so aufm Server ausführen, kann ja auch böswilliger Code sein.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
pq
 2005-04-01 19:53
#4734 #4734
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
lies mal Wiki:Wie frage ich bei Perl-Community.de?, insbesondere Code-Tags
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 3 Einträge, 1 Seite



View all threads created 2005-04-01 19:24.