Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Веб-программирование > Perl
Перезагрузить страницу переменная
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
lollipop lollipop вне форума
Member
 
Сообщений: 19
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.10.2011
Post переменная - 20.10.2011, 21:26

Всем привет. Задали лабу, вот задание: Разработать программу просмотра дерева каталогов и формирования отчета, в котором находятся имена файлов, содержащих заданную последовательность символов, а также счетчик числа таких последовательностей, обнаруженных в каждом из перечисленных файлов. Последовательность символов вводится с клавиатуры или через командную строку. Предусмотреть возможность вызова программы в двух режимах:
— с учетом регистра;
— без учета регистра.
В качестве корня дерева использовать каталог, имя которого вводится пользователем.

Код:

#!/usr/bin/perl -w


use Cwd;
my($case, $node, $sampl, $temp);


unless ($node) {
print"введите название каталога: ";
chomp($node = <STDIN>);
} else { $node = $ARGV[0]; }

unless ($sampl) {
print"введите последовательность символов: ";
chomp($sampl = <STDIN>);
} else { $sampl = $ARGV[1]; }

unless ($case) {
print"учитывать регистр (y/n): ";
chomp($case = <STDIN>);
if ($case eq 'y') { $case = 1; }
else { $case = undef; }
}

unless ($ARGV[2]) {
print"введите название результирующего файла: ";
chomp($temp = <STDIN>);
open RESOUT, ">$temp" || die "не могу открыть файл: $!\n";
} else {
open RESOUT, ">$ARGV[2]" || die "не могу открыть файл $ARGV[2]: $!\n";
}

search_sampl(\$node, \$sampl, \$case);
close RESOUT;

sub search_sampl {
my($pnode, $psamp, $pcase) = @_;
my(@files, $f_cur);
my($ch, @result, $str);
my($cur_dir, $path);

opendir DIR, $$pnode;
@files = readdir DIR;
closedir DIR;
chdir($$pnode) || die "не могу открыть каталог: $!\n";
$cur_dir = cwd;
foreach $f_cur (@files) {
if (-f $f_cur) {
$path = $cur_dir."/".$f_cur;
open IN, "<$f_cur" || warn "не могу открыть файл $f_cur. $!\n", redo;
$ch = 0;
while ($str = <IN>) {
if ($$pcase) {
@result = $str =~ m/$$psamp/g;
$ch += @result;
} else {
@result = $str =~ m/$$psamp/gi;
$ch += @result;
}
}
print RESOUT "$path послед. { $$psamp } = $ch\n";
close(IN);
}
if ((-d $f_cur) && !($f_cur =~ /^\.\.?$/)) {
search_sampl(\$f_cur, $psamp, $pcase);
chdir("$cur_dir") || warn "не могу открыть каталог $cur_dir. $!\n", redo;
}
}
}

Надыбал эту лабу, где уже не помню. Преподаватель докапался до переменных где происходит поиск с учетом регистра и без: $$psamp. Мол для чего тут два символа доллара? Сам никак не допру, помогите кто разберется пожалуйста.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив и переменная. Vovik_0_1 C++ Builder 1 27.08.2011 02:38
анонимная переменная ratata Prolog 5 13.07.2011 17:09
Переменная String Chron4ik Pascal 4 05.11.2009 21:50
Что за переменная acc, и что она делает super_girl Lisp 7 10.05.2007 09:08
VB переменная = дата Corvus81 Visual Basic 3 02.04.2007 14:18
Переменная в теле цикла Sakura PHP 2 22.10.2006 14:33
Как отследить, где портится переменная в VC++7 Palmman Visual C++ 8 18.02.2006 00:15
Одна переменная, но два значения? Спаров PHP 2 04.01.2006 18:33
База vs Переменная imported_Black_Dragon Prolog 3 17.10.2005 21:37
Одна переменная в 2х модулях progzz C++ Builder 9 11.10.2005 08:41
Глобальная переменная для Turbo c++ 3.0 Adois С/С++ 11 09.09.2005 16:57
Переменная в переменной Lesh PHP 3 12.02.2005 12:52



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов