Razmer fajla v kilobajtah: $file = "files.zip"; $size=(stat("$Dir/$file"))[7]; print $size;
открывает и читает из выбранной дирретории все файлы: while(<$dir/journal/*.*>){ push(@files, $_); } типа sed. уничтожает ненавистный символ ^M, получающийся иногда при копировании с виндовой машины на юниксовую машину. Может с успехом заменить любой нужный к замене символ во всех файлах текущей дирректории perl -i -n -p -e 's/\cM//isgm' *.html
#!/usr/bin/perl qx[dbfdump --fs="\x18" --rs="\x19" pdffile.dbf >pdffile.txt]; преобразовать базу в текстовый файл. rs - конец строки, fs разделитель поля в строке
unpack('a8000a*', $tpls[8]) - делит переменную на массив, состоящий из 8 килобайтов. while ($tpls[8]){ ($s,$tpls[8])=unpack('a8000a*', $tpls[8]); push @arr, $s; }
#!/usr/bin/perl -w use POSIX qw(locale_h); use DBI; my $dbh = DBI->connect("dbi:XBase:SEJ_STR.DBF") || die "Can't connect: $DBI::errstr"; my $sth = $dbh->prepare( q{ SELECT name, phone FROM mytelbook }) || die "Can't prepare statement: $DBI::errstr"; my $rc = $sth->execute || die "Can't execute statement: $DBI::errstr"; print "Query will return $sth->{NUM_OF_FIELDS} fields.\n\n"; print "Field names: @{ $sth->{NAME} }\n"; while (($name, $phone) = $sth->fetchrow_array) { print "$name: $phone\n"; } # check for problems which may have terminated the fetch early die $sth->errstr if $sth->err; $dbh->disconnect;
How can I get the unique keys from two hashes? First you extract the keys from the hashes into arrays, and then solve the uniquifying the array problem described above. For example: %seen = (); for $element (keys(%foo), keys(%bar)) { $seen{$element}++; } @uniq = keys %seen; Or more succinctly: @uniq = keys %{{%foo,%bar}}; Or if you really want to save space: %seen = (); while (defined ($key = each %foo)) { $seen{$key}++; } while (defined ($key = each %bar)) { $seen{$key}++; } @uniq = keys %seen;
@matches = grep(/\^$field\^\|.*$search.*?\|/,@data); поиск в массиве нужных слов.
undef $/; @records = split /your_pattern/,; И ВСЕ!!!!
FORM ACTION="mailto:SuvorovAV@mail.ru" ENCTYPE=text/plain ФБЛ НПЦОП ПФРТБЧЙФШ НЩМП ЙЪ ЖПТНЩ ВЕЪ ЧУСЛЙИ УЛТЙРФПЧ
while(1) { system("cat FILE | grep "criteria" | mail -s subject your@address.ru 1> /dev/null 2> /dev/null"); sleep(as much as you want:)); } так надо посылать письма без кронтаба.
Как перл-программу запустить в "фоновом" режиме ./prog.pl 2>&1 >log &
tr/bla1-bla1/bla2-bla2/ for var1, var2, var3;
как написать выражение, чтоб из строки типа /home/www/vasia/file.html выделить только имя файла: s|.*/||
выцепление емейлов с www.job.ru #!/usr/bin/perl -wT $url0="http://www.job.ru/cgi/list1.cgi?GR_NUM="; $url1="%31&TOPICID=9&EDUC=2&TP=&Gr=&SEX=&AGEMIN=23&AGEMAX=&MONEY=200 &CDT="; $url2="&LDAY=99&ADDR=%ED%CF%D3%CB%D7%C1&KWORD=&KW_TP=AND"; use LWP::Simple; foreach($i=1; $i<=57; $i++){ $plus.="%31%2B"; $test=$url0.$plus.$url1.$url2,"\n"; print join "\n", grep{s/(.*) ([\w+\-\.]+\@[\w\-\.]+\.\w{2,3})(.*)/$2/ig} split /\n/, get "$test"; print "$i\n"; }
use Socket; #загрузить inet_addr s{ # ( #Сохранить имя хоста в $1 (?: #Группирующие скобки (?! [-_] ) #ни подчеркивание, ни дефис [\w-] + #кусок имени хоста \. #и точка домена )+ #повторить несколько раз [A-Za-z] #следующий символ - буква [\w-]+ #домен верхнего уровня ) #конец записи $1 }{ #Заменить следующим "$1" . #исходн часть + пробел (($addr = gethostbyname($1)) #Если имеется адрес ? "[" . inet_ntoa($addr). "]"#отформатировать : "[???]" #иначе пометить как сомнительный ) }gex
sub koi2win { my $str = shift; $str =~ tr[\xE1\xE2\xF7\xE7\xE4\xE5\xF6\xFA\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF2\xF3\xF4\xF5\xE6\xE8\xE3\xFE\xFB\xFD\xFF\xF9\xF8\xFC\xE0\xF1\xC1\xC2\xD7\xC7\xC4\xC5\xD6\xDA\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD2\xD3\xD4\xD5\xC6\xC8\xC3\xDE\xDB\xDD\xDF\xD9\xD8\xDC\xC0\xD1\xB3\xA3][\xC0-\xFF\xA8\xB8]; return $str; }
sub win2koi { my $str = shift; $str =~ tr[\xC0-\xFF\xA8\xB8][\xE1\xE2\xF7\xE7\xE4\xE5\xF6\xFA\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF2\xF3\xF4\xF5\xE6\xE8\xE3\xFE\xFB\xFD\xFF\xF9\xF8\xFC\xE0\xF1\xC1\xC2\xD7\xC7\xC4\xC5\xD6\xDA\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD2\xD3\xD4\xD5\xC6\xC8\xC3\xDE\xDB\xDD\xDF\xD9\xD8\xDC\xC0\xD1\xB3\xA3]; return $str; }
Vivesti vremya &time($time); ... sub time{ $time = sprintf("%02d/%02d/%02d b %02d:%02d:%02d", $tm->hour,$tm->min, $tm->sec, $tm->mday, $tm->mon+1, $tm->year+1900); return $time; }
to-ge samoe no odnoj korotkoj strochkoy #!/usr/bin/perl my ($wday,$mday,$mon,$year,$time) = (split(" ",gmtime(time+10800)))[0,2,1,4,3]; print "$wday, $mday $mon $year $time GMT\n"; print (split("\s",gmtime(time+10800)))->[0,2,1,4,3]; print "\n";
17.29 2000-й год будет високосным? (год %4 ==0) - правильный тест на високосный год? О: Да и нет соответственно. Вот полной тест для Григорианского календаря: year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)
@d=split(/[ ]+/, scalar localtime); оНКСВХЛ: $d[0]=='Wed' $d[1]=='Jun' $d[2]=='5' $d[3]=='14:59:35' $d[4]=='2002'
...
...
nu huynya vihodt
<--