Yandex::Tools - useful functions for Yandex daemons and programs.
use Yandex::Tools qw(/^/); # logging set_log_filename("/var/log/mylog"); if (!can_log()) { die ("can't log!\n"); } print "will log to: " . get_log_filename() . "\n"; set_log_options({ 'rotate_size' => 1024*1024, # 1MB 'rotate_keep_copies' => 2, }); do_log("yoyo");
use Yandex::Tools qw(/^/); # test if you can write file (by creating it) if (!can_write("/root/test123")) { die "can't write to /root\n!"; } # read text file into array of lines, removing \r\n my $f = read_file_array('/etc/passwd'); foreach my $line (@{$f}) { print $line . "\n"; } # read file removing \r\n; returns undef if file doesn't exist my $hostname = read_file_option('/etc/hostname'); # read file as is; returns undef if file doesn't exist my $etc_passwd = read_file_scalar('/etc/passwd'); # read file as is; returns True on success, False otherwise if (write_file_scalar('/etc/passwd', $etc_passwd)) { print "written successfully!\n"; } # simply write some text to file # (which would be read with read_file_option) if (!write_file_option('/tmp/hostname', 'test')) { die "unable to write /tmp/hostname!"; } # get filesystem object struct (fileinfo struct) # # $VAR1 = { # 'uid' => 0, # 'short_name' => 'passwd', # 'mtime' => 1273586736, # 'mode' => 420, # 'size' => 1081, # 'absolute_name' => '/etc/passwd', # 'relative_name' => 'etc/passwd', # 'type' => 'file', # 'gid' => 0 # }; # my $fs_obj = fileinfo_struct({'absolute_name' => '/etc/passwd'}); # read directory entries into array (by default) # of fileinfo structs (see above), does not recurse # into directories, allows optional filtering # of only-files or only-directories # my $mixed_array = read_dir('/etc', {'output_type' => 'arrayref', 'only-directories' => 1}); # read directory into hash (recursive), # with relative entry name as a key # and fileinfo struct as value # my $dir_struct = read_dir('/etc', {'output_type' => 'hashref'});
use Yandex::Tools qw(/^/); # remove duplicate entries from array # my @arr = qw/1 2 3 4 5 1 2 3 4 5/; my @uniq = array_clear_dupes(@arr); print join(",", @uniq) . "\n"; # prints: # 1,2,3,4,5 # replace all kinds of delimiters like # multiple spaces, tabs, commas, ampersands, semicolons # with just one space my $str = canonize_delimiters($str); # self explained: if (!is_ascii(chr(1)) || !is_digital(chr(1))) { die "oops"; } # match any of regexp if (matches_with_one_of_regexps("something", ["one", "two", "some"])) { print "match!\n"; } # allows to print anything without warnings # even with `use warnings`. replaces undefined values # with empty string # print safe_string(undef);
# print callstack (for debugging) # print get_callstack(); # release candidate version of run_forked, # cool external programs execution routine # allowing time limiting and some other # types of control. # # distributed widely in L<IPC::Cmd>, # read documentation there. # my $r = run_forked("uptime"); print $r->{'stdout'}; # send mail (different mailers are tried) # send_mail({ 'to' => 'root', 'subject' => 'test', 'body' => 'test', });
Petya Kohts <petya@kohts.ru>
Copyright 2007 - 2011 Petya Kohts.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Yandex::Tools, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Yandex::Tools
CPAN shell
perl -MCPAN -e shell install Yandex::Tools
For more information on module installation, please visit the detailed CPAN module installation guide.