|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.10.2011, 23:59 | #1 |
Регистрация: 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. Мол для чего тут два символа доллара? Сам никак не допру, помогите кто разберется пожалуйста |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
переменая 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 |