Учебное пособие по CGI-программированию Страница 8. Работа с файлами
|
Страница 8 из 30
функция open открывает файл open ФАЙЛОВАЯ_ПЕРЕМЕННАЯ,"имя файла"; #открыть файл для чтения open ФАЙЛОВАЯ_ПЕРЕМЕННАЯ,">имя файла"; #для записи open ФАЙЛОВАЯ_ПЕРЕМЕННАЯ,">>имя файла";#для записи в конец open ФАЙЛОВАЯ_ПЕРЕМЕННАЯ,"+<имя файла";#для чтения и записи open ФАЙЛОВАЯ_ПЕРЕМЕННАЯ,"|комманда"; #направить информацию на вход программы open ФАЙЛОВАЯ_ПЕРЕМЕННАЯ,"комманда|"; #считать информацию с выхода программы open ФАЙЛОВАЯ_ПЕРЕМЕННАЯ,"|комманда|"; #и то и другое вместе
Что какается открытия файлов,то вам как програмистам все очевидно, но с коммандами тоже все здорово,что пояснит хороший пример(из практики): open MAIL,"|mail
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
";#Пошлем информацию по почте print MAIL "Hello\n"; print MAIL "...\n"; print MAIL "...\n"; close MAIL;
когда вы открыли файл вы можете считать из него строку в скалярную переменную Вот так:$str=<FILE> избавиться от символа новой строки на конце поможет функция chomp, ведь этот символ может помешаться например в имени файла или при выводе на экран print "Введите имя файла:"; $fname=<STDIN>; chomp($fname); open F,$fname || die "Cannot open $fname $!\n"; .....
Если также подставить списочную переменную,то получим список строк файла от текущей строки и до конца print "Что искать:"; $search=<STDIN>; chomp($search); @L=<F>; foreach(@L){ print if /$search/; } а можно и так: print "Что искать:"; $search=<STDIN>; chomp($search); foreach(<F>){ print if /$search/; }
бинарный файл можно читать и писать функциями sysread и syswrite: sysread ФАЙЛОВАЯ_ПЕРЕМЕННАЯ,$скалярная_перемменая,сколько_байт syswrite ФАЙЛОВАЯ_ПЕРЕМЕННАЯ,$скалярная_перемменая,сколько_байт функции split и join: @Список=split /рег.выр/,$скаляр; $скаляр=join строка,@Список; #Разбить строку слов,разделенных пробелами в список вы можете @WordList=split / /,$String; #После обработки снова обьединить $String=join ' ',@WordList;
Встроеные функции Perl можно вызывать со скобками или без (как вам удобно), скобки программисты указывают или для красоты,или чаще,что устранить возможную неоднозначность в выраженнии: printf "x=%d",$x; printf ("x=%d",$x);#аналогично
Надеюсь что я вас позабавил примерами функций ;). Примеры применения Perl для различных нужд... Следующая программа переводит текстовый файл в формат HTML (вспомните сколько хлопот вам доставит отлов во всем файле '<', '>' и '&' чтоб заменить их на &tl; , > и & а как неплохо чтоб автоматически все https://www.... превратились в <A xhref="https://www...." >https://www....</A>) #!/usr/bin/perl #txt2html die "Usage: txt2html Infile OutFile\n" unless(@ARGV); open IN,"$ARGV[0]" || die "Cannot open $ARGV[0] $! \n"; open OUT,">$ARGV[1]" || die "Cannot open $ARGV[1] $! \n"; while(<IN>){ s/&/&/g; s/</</g; s/>/>/g; s/\n/<BR>\n/g; s/(https:\/\/\S+)/<A xhref="$1">$1<\/A>/g; print OUT $_; } close IN; close OUT;
|