-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Язык для обучения программированию

Среда, 29 Июля 2020 г. 20:29 + в цитатник
JoeUser:
Цитата Gonarh @
*.pm'ы писал?

Ага) Что-то типа этого:
Скрытый текст
    package ConsultantPlusDocuments;
    require Exporter;
    @ISA = qw(Exporter);
    @EXPORT = qw(New Load LoadLines);
    sub New {
    my $type = shift;
    my $self = {};
    bless $self;
    $self->{'FileName'} = shift;
    $self->{'FieldsText'} = ();
    $self->{'FieldsDesc'} = ();
    $self->{'FieldsNumb'} = ();
    bless $self;
    }
    sub Load {
    my $type = shift;
    my $self = {};
    bless $self;
    $self->{'FileName'} = shift;
    $self->{'FieldsText'} = ();
    $self->{'FieldsDesc'} = ();
    $self->{'FieldsNumb'} = ();
    $self->ReadData();
    bless $self;
    }
    sub LoadLines() {
    my $type = shift;
    my $self = {};
    bless $self;
    $self->{'FileName'} = "";
    $self->{'FieldsText'} = ();
    $self->{'FieldsDesc'} = ();
    $self->{'FieldsNumb'} = ();
    $self->LoadData(shift);
    bless $self;
    }
    sub Field() {
    my ($self,$num,$ret) = @_;
    $ret = $self->{'FieldsText'}{$num};
    1 while (chomp($ret));
    return $ret
    }
    sub SetField() {
    my ($self,$num,$val) = @_;
    ${$self->{'FieldsText'}}{$num} = ${$val};
    }
    sub SetFileDir() {
    my ($self,$val,$w) = @_;
    $w = $self->{'FileName'};
    $w =~ s/(.*\/)(.+)//;
    $w =~ s/(.*\)(.+)//;
    $self->{'FileName'} = $val.$w;
    }
    sub SetFileName() {
    my ($self,$val,$w) = @_;
    $w = $self->{'FileName'};
    $w =~ s/(.*\/)(.+)//;
    $w =~ s/(.*\)(.+)//;
    $self->{'FileName'} = $w.$val;
    }
    sub ReadData() {
    my ($self,$buf) = (shift);
    if (open(FD, $self->{'FileName'})) {
    $buf = join("",);
    close(FD);
    $buf =~ s/(\n$$\n\n)(.*)//s;
    while ($buf =~ /$(\d+)(\s+)(.+?)(\n)(.*?)\n(?=$|\n\n-{60,}\n$|$)/s) {
    ${$self->{'FieldsText'}}{} = ;
    ${$self->{'FieldsDesc'}}{} = ;
    push @{$self->{'FieldsNumb'}}, ();
    $buf = $';
    }
    }
    }
    sub LoadData() {
    my ($self,$buf) = @_;
    $buf = join("",@{$buf});
    $buf =~ s/(\n$$\n\n)(.*)//s;
    while ($buf =~ /$(\d+)(\s+)(.+?)(\n)(.*?)\n(?=$|\n\n-{60,}\n$|$)/s) {
    ${$self->{'FieldsText'}}{} = ;
    ${$self->{'FieldsDesc'}}{} = ;
    push @{$self->{'FieldsNumb'}}, ();
    $buf = $';
    }
    }
    sub WriteData() {
    my ($self,$buf,$i,$w) = @_;
    if (open(FD, ">".$self->{'FileName'})) {
    $buf = "\n$$\n\n";
    foreach $i (@{$self->{'FieldsNumb'}}) {
    ${$self->{'FieldsText'}}{$i} =~ s/(.*?)(\s*\Z)//s;
    $buf .= "$".$i." ".${$self->{'FieldsDesc'}}{$i}."\n".${$self->{'FieldsText'}}{$i}."\n\n";
    $j++;
    }
    $buf .= "\n".("-" x 68)."\n";
    seek(FD,0,0);
    truncate(FD,0);
    print FD $buf;
    close(FD);
    }
    }
    sub Build($@) {
    my ($self,$tpl,$i) = @_;
    foreach $i (@{$tpl}) {
    ${$self->{'FieldsText'}}{${$i}[0]} = "";
    ${$self->{'FieldsDesc'}}{${$i}[0]} = ${$i}[1];
    push @{$self->{'FieldsNumb'}},(${$i}[0]);
    }
    }
    sub DelRefs($%) {
    my ($L,%Del) = @_;
    my @W = split("",${$L});
    my $Len = scalar(@W);
    my ($i,$first,$in,$no) = (0,1,0,0);
    for($i=0;$i<$Len;$i++) {
    if (($W[$i] eq " ") || ($W[$i] eq " ") || ($W[$i] eq " ")) {
    if ($first) {
    if ($W[$i] eq " ") {
    $in = 1;
    $W[$i] = " " if ($Del{$no} eq "1");
    }
    elsif ($W[$i] eq " ") {
    $W[$i] = " " if ($Del{$no} eq "1");
    $no++;
    }
    else {
    $W[$i] = " " if ($Del{$no} eq "1");
    $no++;
    $first = 0;
    redo;
    }
    $first = 0;
    } else {
    if ($W[$i] eq " ") {
    return 0 if ($in);
    $W[$i] = " " if ($Del{$no} eq "1");
    $in = 1;
    }
    elsif ($W[$i] eq " ") {
    return 0 unless ($in);
    $W[$i] = " " if ($Del{$no} eq "1");
    $in = 0;
    $no++;
    }
    else {
    if ($in) {
    $W[$i] = " " if ($Del{$no} eq "1");
    $in = 0;
    $no++;
    redo;
    } else {
    $W[$i] = " " if ($Del{$no} eq "1");
    $in = 1;
    }
    }
    }
    }
    }
    ${$L} = join("",@W);
    return 1;
    }
    1;

https://forum.sources.ru/index.php?showtopic=419241&view=findpost&p=3835474

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку