HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

работа с файлами
  #131  
Старый 15.09.2007, 21:17
malamut
Новичок
Регистрация: 08.09.2007
Сообщений: 3
Провел на форуме:
10440

Репутация: 0
По умолчанию работа с файлами

Сорри за тупой вопрос. Нужно удалить из файла все строки, начинающиеся со "*". Делаю кривым путём
Код:
open (MYFILE, 'p.txt');
open(TEMP,'>>p~.txt');
while (<MYFILE>)
{
  if ( substr($_, 0, 1) != "*")
  {
    chomp;
    print TEMP "*".$_."\n";
  }
}
close (MYFILE);
close(TEMP);
rename("p~.txt", "p.txt");
Файл становится пустым (p.txt). Хотя первый символ определяет правильно. Подскажите в чём прикол?
P.S. Я понимаю, что вся эта байда с двумя файлами вообще не нужна, но, по возможности, объясните в чём трабл, а не придумывайте простые решения. Заранее спасибо
 

  #132  
Старый 15.09.2007, 23:07
demonoid
Banned
Регистрация: 12.01.2007
Сообщений: 113
Провел на форуме:
4094601

Репутация: 495
По умолчанию

2 malamut
Код:
#!/usr/bin/perl -w
use strict;
use warnings;

use constant BACKUP_PREFIX => 'backup_';
use constant COMMENT       => '\x2A'; 

use Getopt::Std;

my %options;
getopts( "f:" , \%options );

if( !exists $options{f} )
{
    &usage;
}
else
{
  my $m_file  = $options{f};
  &sort( $m_file );
}

sub sort
{
   my $m_file  = shift; 
   my $b_file  = BACKUP_PREFIX."$m_file";
   my $comment = COMMENT;

   my @save   = undef;
   my @backup = undef;

   open( my $file_m, "+<", $m_file ) || exit print "ERROR:Cant\'t open $m_file";
   open( my $file_b, ">", $b_file ) ;

   my $i = 0;
   my $b = 0;
   my $g = 0;

   while( <$file_m> )
   {
       if( substr($_, 0, 1) =~/$comment/  )
       {
          $b++;
       }
       else
       {
         $save[$g] = $_;
         $g++;
       }
       $backup[$i] = $_;
      $i++;
   }


   foreach ( @save )
   {
      print $file_m "$_";
   }
   close( $file_m );

   foreach ( @backup )
   {
       print $file_b "$_";
   }
   close( $file_b );

   &stats( $i,$b,$g,$m_file,$b_file );
}

sub stats
{
   my $comment = COMMENT ;
   my( $all,$good,$bed,$file_m,$b_file  ) = ( shift,shift,shift,shift,shift );
   printf "\t In all the lines               : %.3d \n".
          "\t Lines Containing     '%.4s'    : %.3d \n".
          "\t Lines not Containing '%.4s'    : %.3d \n\n".
          "\t Lines, Containing is stored in : %s   \n".
          "\t A back-up copy is stored in    : %s   \n",$all,$comment,$good,$comment,$bed,$file_m,$b_file  ;
}

sub usage
{
  print "\t  Usage   : $0 -f <file>   \n".
        "\t  Example : $0 -f file.txt \n";	
  exit 1;
}
Мой файл : file.txt
Код:
*line1
line2

line3
*line4
запускаем :
Код:
 perl -f file.txt
Статистика :
Код:
In all the lines               : 005
Lines Containing     '\x2A'    : 002
Lines not Containing '\x2A'    : 003

Lines, Containing is stored in : file.txt
A back-up copy is stored in    : backup_file.txt
Смотрим файл:file.txt
Код:
line2

line3
бекап в файле backup_file.txt

Последний раз редактировалось demonoid; 20.09.2007 в 10:04..
 

  #133  
Старый 15.09.2007, 23:09
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме:
6144796

Репутация: 1095


По умолчанию

malamut

Код:
open (MYFILE, 'p.txt');
open(TEMP,'>>p~.txt');
while (<MYFILE>) { 
    print TEMP '*'.$_ if substr($_, 0, 1) ne '*';  ## тут надо использовать ne, т.к. строка
    ## как вариант можно использовать регексп:
    ## print TEMP '*'.$_ if not /^\*/;
    ## кстати незачем делать chomp, а затем снова добавлять перенос строки...
}
close (MYFILE);
close(TEMP);
rename('p~.txt', 'p.txt');
 

  #134  
Старый 15.09.2007, 23:12
malamut
Новичок
Регистрация: 08.09.2007
Сообщений: 3
Провел на форуме:
10440

Репутация: 0
Thumbs up

Всем спасибо, разобрался
 

  #135  
Старый 16.09.2007, 01:42
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме:
1948091

Репутация: 1686


По умолчанию

Цитата:
Код:
#!/usr/bin/perl -w

use strict;
# use File::Copy;  ## это не нужно

my $num=0;
my $dir="/path/to/dir/";

opendir(DIR, $dir) or die $!;
my @files=readdir(DIR);

foreach my $file (@files) {

# $_ =~ m/([a-zA-Z])\d+?/g;  # <= вот сдесь у меня проблема!  ## про регексп я написал, исходя из того, что в дире с файлами, которые надо переименовать, могут находиться те, которые переименовывать не надо.. если это не так, то можно и без регулярного выражения обойтись.. но, допустим, файлы, которые надо переименовывать оканчиваются на 'JPG' (как у тебя написано), тогда мы переименовываем, проверяя на это:

rename $dir.$file, $dir.++$num.'.jpg' if $file =~ /JPG/;  ## ну понятное дело ренейму надо знать в какой дире файлы эти лежат )
}
closedir(DIR);
использование strict; и как следствие my -- тут не совсем целесообразно тк скрипт маленький и я думаю имена всех переменных можно и самому запомнить - я это к тому чтобы новички не вбили себе что надо всегда юзать стрикт и все переменные объявлять через my - вот вообще никогда его не юзаю и пишу - нормально работающие скрипты -- тут есть выбор
 

  #136  
Старый 16.09.2007, 02:44
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме:
6144796

Репутация: 1095


По умолчанию

>> вот вообще никогда его не юзаю и пишу - нормально работающие скрипты

ну так ты серьезных скриптов никогда не писал.. :P

я согласен, что в небольших скриптах использование strict вовсе не обязательно, тем не менее как тока размер твоих скриптов начинает увеличиваться, начинает увеличиваться и количество ошибок, число которых strict помогает сократить.. имхо, новичкам как раз рекомендуется юзать strict..

кроме того, например, разработка веб-приложений под modperl, обязует программера использовать strict..
 

  #137  
Старый 20.09.2007, 21:35
qwerty1
Новичок
Регистрация: 20.06.2007
Сообщений: 6
Провел на форуме:
29067

Репутация: 5
По умолчанию

есть перл скрипт эксплоита для wordpress как его привести в рабочее положение,только если можно подробнее
 

  #138  
Старый 20.09.2007, 21:40
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

perl mega_xek_0day_odept_ploet.pl
Вообще поиск по форуму рулит
 

  #139  
Старый 22.09.2007, 18:43
~EviL~
Участник форума
Регистрация: 14.08.2007
Сообщений: 150
Провел на форуме:
686641

Репутация: 205
По умолчанию

Помогите пожалуйста, можете сказать где здесь ошибка:

printf $socket ("GET %sindex.php?act=Login&CODE=autologin HTTP/1.0\nHost: %s\nAccept: */*\nCookie: member_id=%s; pass_hash=%s%s%s%s%s\nConnection: close\n\n",
 

  #140  
Старый 22.09.2007, 18:51
genom--
Постоянный
Регистрация: 09.07.2006
Сообщений: 937
Провел на форуме:
1948091

Репутация: 1686


По умолчанию

printf $socket ("GET %sindex.php?act=Login&CODE=autologin HTTP/1.0\nHost: %s\nAccept: */*\nCookie: member_id=%s; pass_hash=%s%s%s%s%s\nConnection: close\n\n"); мб так?
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по Ipb 2.0 Voodoo_People Сценарии/CMF/СMS 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ