Двппву тфръфвоов тряюрнуеж трдъфигвжы цвлнэ пв хефюеф, ехнк 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; }