Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2011, 23:59   #1
lilian
 
Регистрация: 06.10.2011
Сообщений: 5
По умолчанию Переменая

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

Код:

#!/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. Мол для чего тут два символа доллара? Сам никак не допру, помогите кто разберется пожалуйста
lilian вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переменая 0 B89F54C4 h goluzov Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 06.06.2011 10:27
Переменая := результат запроса(SQL); ??? $T@LKER БД в Delphi 3 25.04.2010 11:43