This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
язык_программирования_perl [2014/08/07 12:47] val |
язык_программирования_perl [2019/10/11 13:07] val |
||
---|---|---|---|
Line 17: | Line 17: | ||
==== Пример 1 ==== | ==== Пример 1 ==== | ||
+ | * Отключение буферизации вывода | ||
* Чтение данных с STDIN | * Чтение данных с STDIN | ||
* Регулярный разбор полей строки | * Регулярный разбор полей строки | ||
Line 24: | Line 25: | ||
</code><code> | </code><code> | ||
#!/usr/bin/perl | #!/usr/bin/perl | ||
+ | |||
+ | $|=1; | ||
while(<>) { | while(<>) { | ||
Line 54: | Line 57: | ||
my ($ip) = @ARGV; | my ($ip) = @ARGV; | ||
- | if (not defined $ip) { | + | unless($ip) { |
die "Need ip\n"; | die "Need ip\n"; | ||
} | } | ||
Line 126: | Line 129: | ||
$sth = $dbh->prepare(qq{select LAST_INSERT_ID()}); | $sth = $dbh->prepare(qq{select LAST_INSERT_ID()}); | ||
$sth->execute() or next MAINLOOP; | $sth->execute() or next MAINLOOP; | ||
- | (my $a)=$sth->fetchrow_array(); | + | my ($a)=$sth->fetchrow_array(); |
print "a = $a; b = $b\n"; | print "a = $a; b = $b\n"; | ||
Line 154: | Line 157: | ||
* Использование UTF8 | * Использование UTF8 | ||
- | * Работа с XML форматом | + | * Работа с XML форматом ([[https://stackoverflow.com/questions/46167194/get-value-of-elements-using-xmldom|Get value of elements using XML::DOM]]) |
=== Исходный файл === | === Исходный файл === | ||
Line 180: | Line 183: | ||
</service> | </service> | ||
</code> | </code> | ||
+ | |||
+ | === Текст программы === | ||
+ | <code> | ||
+ | # cat xml2txt.pl | ||
+ | </code><code> | ||
+ | #!/usr/bin/perl -w | ||
+ | |||
+ | use XML::DOM; | ||
+ | use strict; | ||
+ | use utf8; | ||
+ | |||
+ | binmode(STDOUT,':utf8'); | ||
+ | |||
+ | my $parser = new XML::DOM::Parser; | ||
+ | my $doc = $parser->parsefile ('postgraduate.xml'); | ||
+ | my @nodes =$doc->getElementsByTagName("postgraduate"); | ||
+ | |||
+ | foreach my $node (@nodes) { | ||
+ | |||
+ | # print $node->toString; | ||
+ | | ||
+ | my $uuid = $node->getAttributeNode ("uuid")->getValue; | ||
+ | my $lastname = $node->getAttributeNode ("lastname")->getValue; | ||
+ | my $firstname = $node->getAttributeNode ("firstname")->getValue; | ||
+ | my $middlename = $node->getAttributeNode ("middlename")->getValue; | ||
+ | print "$uuid,$lastname,$firstname,$middlename\n"; | ||
+ | } | ||
+ | </code> | ||
+ | ==== Пример 5 ==== | ||
+ | |||
+ | * Работа с Communigate | ||
+ | |||
+ | <code> | ||
+ | # wget http://www.stalker.com/CGPerl/CLI.pm | ||
+ | |||
+ | # mv CLI.pm /etc/perl/ | ||
+ | |||
+ | # cat addcgpuser.pl | ||
+ | </code><code> | ||
+ | #!/usr/bin/perl | ||
+ | |||
+ | use strict; | ||
+ | use CLI; | ||
+ | |||
+ | my ($AccountName,$RealName,$Password) = @ARGV; | ||
+ | |||
+ | my $cli = new CGP::CLI( { PeerAddr => '127.0.0.1', | ||
+ | PeerPort => 106, | ||
+ | login => 'postmaster', | ||
+ | password => 'Pa$$w0rd' | ||
+ | } ) | ||
+ | || die "Can't login to CGPro: ".$CGP::ERR_STRING."\n"; | ||
+ | |||
+ | |||
+ | my $UserData; | ||
+ | @$UserData{'RealName'}=$RealName; | ||
+ | @$UserData{'Password'}=$Password; | ||
+ | |||
+ | $cli->CreateAccount(accountName => $AccountName, | ||
+ | settings => $UserData) | ||
+ | || die "Can't create account: ".$CGP::ERR_STRING."\n"; | ||
+ | |||
+ | $cli->Logout; | ||
+ | |||
+ | exit; | ||
+ | </code><code> | ||
+ | mail# ./addcgpuser.pl user3 'Сидор Сидорович Сидоров' cpassword3 | ||
+ | </code> | ||
+ | |||
+ | ==== Пример 6 ==== | ||
+ | |||
+ | * Perl CGI | ||
+ | * http://....hello.pl?name=ivanov | ||
+ | |||
+ | <code> | ||
+ | $ cat hello.pl | ||
+ | </code><code> | ||
+ | #!/usr/bin/perl | ||
+ | |||
+ | use strict; | ||
+ | use CGI; | ||
+ | |||
+ | my $q=new CGI(); | ||
+ | my $name=$q->param('name'); | ||
+ | print qq| | ||
+ | <html> | ||
+ | <body> | ||
+ | <h1>Hello $name</h1> | ||
+ | </body> | ||
+ | </html> | ||
+ | |; | ||
+ | </code> | ||
+ | |||
+ | ==== Ссылки ==== | ||
+ | |||
+ | * [[http://codecry.com/perl/random-password-generator|Random Password Generator in Perl]] | ||
+ | * [[http://www.xgu.ru/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D0%B8%D1%82|Транслит]] |