|
|
Двппву тфръфвоов тряюрнуеж трдъфигвжы цвлнэ пв хефюеф, ехнк apache пвхжфреп жвм, ажр пе тефемрдкфиеж двппэе POST:
#!/usr/bin/perl -w
$basedir = "/usr/home/vovka/public_html/files";
$donepage = "http://www.myserver.ru/~vovka/files";
use CGI;
$onnum = 1;
while ($onnum != 9) {
my $req = new CGI;
my $file = $req->param("FILE$onnum");
if ($file ne "") {
my $fileName = $file;
$fileName =~ s!^.*(\\|\/)!!;
$newmain = $fileName;
open (OUTFILE, ">$basedir/$fileName");
while (my $bytesread = read($file, my $buffer, 1024)) {
print OUTFILE $buffer;
}
close (OUTFILE);
}
$onnum++;
}
print "Content-type: text/html\n";
print "Location:$donepage\n\n";
Хрржюежхжюеппр имвяэюву акхнр ю зкмне while ($onnum !=
9) оргпр трдъфигвжы пигпре акнхр цвлнрю тфк рдпро POST явтфрхе.
html-мрд црфоэ дну хмфктжв жвмрл:
<form method="POST" action="/cgi-bin/fup.pl" ENCTYPE="multipart/form-data"> File 1: <input type="file" name="FILE1"> <br>File 2: <input type="file" name="FILE2"> <br>File 3: <input type="file" name="FILE3"> <br>File 4: <input type="file" name="FILE4"> <br>File 5: <input type="file" name="FILE5"> <br>File 6: <input type="file" name="FILE6"> <br>File 7: <input type="file" name="FILE7"> <br>File 8: <input type="file" name="FILE8"> <br>File 9: <input type="file" name="FILE9"> <br> <input type="submit" value="Upload!"> </form>
Твмежэ юкдв multipart/form-data рткхэювбжху rfc1867, мржрфэл чидеж рткхвп чрнее трдфрдчпр пв тфедоеж вюжровжкаехмрл трхэнмк кярчфвгепкл аефея црфоэ, ю мржрфэй хмвявпр ENCTYPE="multipart/form-data", трокор тфрхжрър жемхжв(явмрдкфрювппрър URI). Ж.е. хмфктж, трхэнвбькл мвфжкпмк к жемхж пв идвнеппэл хефюеф.
Тфръфвоов кннбхжфкфиеж кхтрныярювпке тефеоеппрл HTTP_X_FORWARDED_FOR кя йшщв %ENV, мржрфву тряюрнуеж(ехнк тфрмхк пе хрюхео тфрмхк :), ияпвжы р нрмвныпро вдфехе овщкпэ, пвйрдуьелху яв чфвпдовишфро(цвлфюрнро, рп-ге тфрмхк).
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request::Common;
print "Content-type: text/html\n";
print "Location: http://www.fsb.gov.ru/\n\n" if (&is_proxy());
print "Location:http://www.udaff.com/\n\n" unless (&is_proxy());
sub is_proxy{
return 1 if ($ENV{'HTTP_X_FORWARDED_FOR'} ne "");
$addr = $ENV{'REMOTE_ADDR'};
$ua = new LWP::UserAgent;
$ua->timeout(5);
foreach(80, 8000, 8080, 3128){
$ua->proxy('http', "http://$addr:$_/");
$resp = $ua->request(GET "http://www.ru/");
$cont = $resp->content();
return 1 if ($cont =~ /Russia on the Net/)
}
return 0;
}
хмфктж пвткхвп grange
Дртихжко пигпр хрядвжы ржаеж ю црфовже Excel, дну шжрър пигпр хмвавжы к ихжвпрюкжы ордины Spreadsheet.pm c хвлжв www.cpan.org. Тфкюедеппву пкге тфръфвоов тряюрнуеж ъепефкжы цвлнэ ю црфовже excel х пигпэо фвяоефро трнел, зюежро чимю к юэфвюпкювпкео хрдефгкорър уаеем тр явтфрхи трныярювжену.
#!/usr/bin/perl -w
use strict;
use Spreadsheet::WriteExcel;
use Lingua::RU::Charset qw (:CONVERT);
my $fraze="цЕИЦЛЖЙЕП ИНЖЛФЦЬ";
my $workbook = Spreadsheet::WriteExcel->new("pr.xls");
my $sheet1 = $workbook->addworksheet();
my $sheet2 = $workbook->addworksheet();
my $sheet3 = $workbook->addworksheet("Example");
my $format = $workbook->addformat();
$format->set_bold();
$format->set_size(15);
$format->set_color('blue');
$format->set_align('center');
$sheet3->set_column(0, 0, 50);
$sheet3->activate();
$sheet3->write(0, 0, koi2win($fraze), $format);
$sheet3->write(1, 0, koi2win($fraze), $format);
$sheet3->write(2, 0, koi2win($fraze));
$sheet3->write(3, 0, koi2win("дАЧ"));
$sheet3->write(4, 0, koi2win("цЖЛ"));
$sheet3->write(5, 0, 4.00001);
my $date = $workbook->addformat();
$date->set_num_format('mmmm d yyyy h:mm AM/PM');
$sheet3->write(7, 0, 36050.1875, $date);
Cрржюежхжюеппр трниавежcу ажр-жр юкдв:

Двнее тфръфвоои оргпр хрюефщеппр хюрчрдпр мифракжы мвм юядиовежху к, дртихжко, тефеюрдкжы двппэе кя dbt(memo-жкт) ю Excel. Ю двппро тфкоефе чэнв тфкоепепв чкчнкржемв дну тефемрдкфрювпку рж Внемхв Цвфчефв, ж.м. хмфктж ржнвгкювнху трд XWindows by Linux. Ю тфкпзкте юхе жр-ге хворе делхжюиеж к дну тфрхоржфв цвлнрю тфк трорьк StarOffice.
Дртихжко тфрчнеов, ехжы дкхм х ufs, пв мржрфро ехжы дкфемжрфкк, пвяювппэе тр фиххмк. Пигпр шжрж дкхм трдорпжкфрювжы пв ext2. В дкфемжрфкк ю ISO мрдкфрюме Samba пе юрхтфкпковеж, жрапее пе Samba, a трныярювженк Windows овщкп. Япвакж пигпв тфръфвоов, мржрфву чэ иоенв тефеденэювжы пвяювпку дкфемжрфкл кя iso ю win1251. Тфкюедеппву пкге тфръфвоов кхтрныяиеж жи-ге хвоиб чкчнкржеми тефемрдкфрюькм:
#!/usr/bin/perl
print "content-type: text/html\n\n";
use Lingua::RU::Charset qw (:CONVERT);
my $di="/raznoe";
&scan($di);
sub scan {
my $dir=$_[0];
my (@files,$filen,$ndir,$n,$mass,@dirs);
opendir D, $dir or warn "Cannot open $dir: $!" and next;
@dirs=grep {!(/^\./) && -d "$dir/$_"} readdir D;
rewinddir D;
closedir D;
for $n(0..$#dirs) {
my @ma=koi2win(iso2koi($dirs[$n]));
print "-----begindir-----\n [ ",win2koi("$dir/$dirs[$n]")," - ",
win2koi("$dir/$ma[$#ma]")," ]";
print " [ ",iso2koi($dirs[$n])," - NEW DIR ] " if rename
"$dir/$dirs[$n]", "$dir/$ma[$#ma]";
$ndir="$dir/$ma[$#ma]";
print "\n [ new scan dir - ",win2koi($ndir)," ] \n-----enddir-----\n\n";
&scan($ndir);
}
return 1;
}
Тфръфвоов дрюрныпр тфрхжв, ажрчэ еЈ рчсухпужы. Тфрхжр мвм кннбхжфвзку кхтрныярювпку уяэмв perl дну пигд хкхжеопрър вдокпкхжфкфрювпку ю хниаве юряпкмпрюепку шмхжфеппэй хкживзкл. Хворе хнргпре ядехы чэнр ртфеденкжы мвмву мрдкфрюмв пв ufstype=44bsd. Фемроепдиб трныярювжыху шжрл тфръфвоорл, коеу пемржрфэл ртэж фвчржэ йржу-чэ х Linux(двчэ пе чэнр тфрчнео тфк ржнвдме х мровпдвок жктв chmod -R 777 ., мржрфву тфрхжр пвхоефжы ичкювеж sendmail). Юррчье perl дну вдокпв Linux/FreeBSD ниащву пвйрдмв. Пе хакжву shell мрпеапр(и мржрфрър пеж http://www.cpan.org :).
Жр-ге хворе, пр дну цвлнрю(оргпр чэнр чэ хнкпмрювжы ю рдпи тфръфвоои, опе непы :)
#!/usr/bin/perl
use Lingua::RU::Charset qw (:CONVERT);
my $di="/raznoe";
&scan($di);
sub scan {
my $dir=$_[0];
my (@files,$filen,$ndir,$n,$mass,@dirs);
opendir D, $dir or warn "Cannot open $dir: $!" and next;
@dirs=grep {!(/^\./) && -d "$dir/$_"} readdir D;
rewinddir D;
@files=grep {!(/^\./) && -f "$dir/$_"} readdir D;
closedir D;
for $n(0..$#dirs) {
$ndir="$dir/$dirs[$n]";
&scan($ndir);
}
for $n(0..$#files) {
$filen=$dir."/".$files[$n];
my @mass=koi2win(iso2koi("$files[$n]"));
print " [ ",iso2koi($files[$n])," => NEW FILE!!! ]\n"
if rename "$dir/$files[$n]", "$dir/$mass[$#mass]"
or die "Cant rename $dir/$mass[$#mass]: $!\n" and next;
}
return 1;
}