31 Dec 2010
22 Dec 2010
Download youtube videos - Perl
Perl one-liner to download youtube videos
perl -MWWW::Mechanize -e '$m = WWW::Mechanize->new; $_=shift; ($i) = /v=(.+)/; s/%(..)/chr(hex($1))/ge for (($u) = $m->get($_)->content =~ /l_map": .+(?:%2C)?5%7C(.+?)"/); $m->get($u, ":content_file" => "$i.flv")'Use it as following:
$ perl ... http://www.youtube.com/watch?v=ID
It will save the video to a file named "ID.flv".
It was written by Peteris Krumins (peter@catonmat.net).
His blog is at http://www.catonmat.net -- good coders code, great reuse.
Proc::ProcessTable
Framework for getting process information
Find it at: cpan
Description
This modules gets the process information
Who should use it?
Very useful for sysadmins
Good features:
Good to extract process related information and it is very fast
What are the drawbacks or problems?
Not working on some Linux flavors
There are 13 open bugs
Example code:
#!/usr/bin/perl -w
use strict;
print join("\n", &memusage), "\n";
exit 0;
# memusage subroutine
#
# usage: memusage [processid]
#
# this subroutine takes only one parameter, the process id for
# which memory usage information is to be returned. If
# undefined, the current process id is assumed.
#
# Returns array of two values, raw process memory size and
# percentage memory utilisation, in this order. Returns
# undefined if these values cannot be determined.
sub memusage {
use Proc::ProcessTable;
my @results;
my $pid = (defined($_[0])) ? $_[0] : $$;
my $proc = Proc::ProcessTable->new;
my %fields = map { $_ => 1 } $proc->fields;
return undef unless exists $fields{'pid'};
foreach (@{$proc->table}) {
if ($_->pid eq $pid) {
push (@results, $_->size) if exists $fields{'size'};
push (@results, $_->pctmem) if exists $fields{'pctmem'};
};
};
return @results;
}
Perl monks
Perl monks
7 Dec 2010
Perl - Cheat sheets Collection
perlcheat - Perl 5 Cheat Sheet [html] (cpan.org)
Perl Cheat Sheet [html] (juerd.nl)
Perl Quick Reference Card [pdf] (johnbokma.com)
Perl Regular Expressions by Iain Truskett [pdf] (refcards.com)
Perl Regular Expression - Quick Reference [pdf]
Perl Predefined Variables (perls special variable cheat sheet) by Peteris Krumins [doc, pdf]
Language Quick Reference by Johan Vromans [pdf] (tiger.la.asu.edu)
PERL Win32 Quick Reference by Jialong He [pdf] (digilife.be)
Perl Cheat Sheet [html] (encycode.com)
Perl Reference Card by Michael Goerz [pdf, odt] (users.physik.fu-berlin.de/~goerz/)
Perl Cheat Sheet [html] (juerd.nl)
Perl Quick Reference Card [pdf] (johnbokma.com)
Perl Regular Expressions by Iain Truskett [pdf] (refcards.com)
Perl Regular Expression - Quick Reference [pdf]
Perl Predefined Variables (perls special variable cheat sheet) by Peteris Krumins [doc, pdf]
Language Quick Reference by Johan Vromans [pdf] (tiger.la.asu.edu)
PERL Win32 Quick Reference by Jialong He [pdf] (digilife.be)
Perl Cheat Sheet [html] (encycode.com)
Perl Reference Card by Michael Goerz [pdf, odt] (users.physik.fu-berlin.de/~goerz/)
5 Dec 2010
Facebook Puzzle - Perl - Breathalyzer
Facebook puzzle Breathalyzer can be solved easily using Levenshtein distance calculation Algorthim. More details about this algorithm is here Levenshtein distance
If you are trying to solve using Perl have a look at Text::Levenshtein
This module is available in cpanText::Levenshtein
If you are trying to solve using Perl have a look at Text::Levenshtein
This module is available in cpanText::Levenshtein
Facebook Puzzle - Perl - hoppity
Facebook has added Puzzles section under its careers section. You can follow this procedure to get your test puzzle submission done.
1. Save this script in a file hoppity.
2. Send this file to 1051962371@fb.com with the file attached and subject as hoppity
3. After four hours facebook puzzle bot will reply you with your submission results
1. Save this script in a file hoppity.
#!/usr/bin/perl
use strict;
use warnings;
my $fh;
my $path = $ARGV[0];
die("Missing Filename. Run $0\n") if(! $path);
die("File not found ") if(! -f $path);
open($fh,"<$path") || die("Error reading file");
my $number = <$fh>;
chomp($number);
$number = trim($number);
die("Invalid input $number") if($number !~ /\d+/);
$\ = "\n";
for(my $i=1;$i<=$number;$i++) {
if ($i % 3 == 0 && $i % 5 == 0) {
print "Hop";
} elsif ($i % 3 == 0) {
print "Hoppity";
} elsif ($i % 5 == 0) {
print "Hophop";
}
}
sub trim {
my ( $str) = @_;
$str =~ s/^\s*//g;
$str =~ s/\s*$//g;
return $str;
}
2. Send this file to 1051962371@fb.com with the file attached and subject as hoppity
3. After four hours facebook puzzle bot will reply you with your submission results
2 Dec 2010
Perl Best practices - Coding
Ten Essential Coding Practices by Damien conway in PBP book
1. Always use strict and use warnings.
2. Use grammatical templates when forming identifiers.
3. Use lexical variables, not package variables.
4. Label every loop that is exited explicitly, and every next, last, or redo.
5. Don’t use bareword filehandles; use indirect filehandles.
6. In a subroutine, always unpack @_ first, using a hash of named arguments if
there are more than three parameters.
7. Always return via an explicit return.
8. Always use the /x ,/m , and /s flags, and the \A and \z anchors.
9. Use capturing parentheses in regexes only when deliberately capturing, then give
the captured substrings proper names.
10. Never make variables part of a module’s interface.
1. Always use strict and use warnings.
2. Use grammatical templates when forming identifiers.
3. Use lexical variables, not package variables.
4. Label every loop that is exited explicitly, and every next, last, or redo.
5. Don’t use bareword filehandles; use indirect filehandles.
6. In a subroutine, always unpack @_ first, using a hash of named arguments if
there are more than three parameters.
7. Always return via an explicit return.
8. Always use the /x ,/m , and /s flags, and the \A and \z anchors.
9. Use capturing parentheses in regexes only when deliberately capturing, then give
the captured substrings proper names.
10. Never make variables part of a module’s interface.
Perl Best practices - Development
Ten Essential Development Practices
1. Design the module’s interface first.
2. Write the test cases before the code.
3. Create standard POD templates for modules and applications.
4. Use a revision control system.
5. Create consistent command-line and configuration interfaces.
6. Agree upon a coherent layout style and automate it with perltidy.
7. Code in commented paragraphs.
8. Throw exceptions instead of returning special values or setting flags.
9. Add new test cases before you start debugging.
10. Don’t optimize code—benchmark it.
vimrc for Perl coding from PBP by damien conway
vim is the desired editor for most of the Perl programmers. This .vimrc is recommended by Damien conway in Perl Best practices book
set autoindent "Preserve current indent on new lines
set textwidth=78 "Wrap at this column
set backspace=indent, eol, start "Make backspaces delete sensibly
set tabstop=4 "Indentation levels every four columns
set expandtab "Convert all tabs typed to spaces
set shiftwidth=4 "Indent/outdent by four columns
set shiftround "Indent/outdent to nearest tabstop
set matchpairs+=<: > "Allow % to bounce between angles too
"Inserting these abbreviations inserts the corresponding Perl statement. . .
iab phbp #! /usr/bin/perl –w
iab pdbg use Data: : Dumper ' Dumper' ; warn Dumper [ ] ; ^[ hi
iab pbmk use Benchmark qw( cmpthese ); ^Mcmpthese -10, {}; ^[ O
iab pusc use Smart: : Comments; ###
iab putm use Test: : More qw( no_plan );
iab papp ^[ : r ~/. code_templates/perl_application. pl^
iab pmod ^[ : r ~/. code_templates/perl_module. pm
set autoindent "Preserve current indent on new lines
set textwidth=78 "Wrap at this column
set backspace=indent, eol, start "Make backspaces delete sensibly
set tabstop=4 "Indentation levels every four columns
set expandtab "Convert all tabs typed to spaces
set shiftwidth=4 "Indent/outdent by four columns
set shiftround "Indent/outdent to nearest tabstop
set matchpairs+=<: > "Allow % to bounce between angles too
"Inserting these abbreviations inserts the corresponding Perl statement. . .
iab phbp #! /usr/bin/perl –w
iab pdbg use Data: : Dumper ' Dumper' ; warn Dumper [ ] ; ^[ hi
iab pbmk use Benchmark qw( cmpthese ); ^Mcmpthese -10, {}; ^[ O
iab pusc use Smart: : Comments; ###
iab putm use Test: : More qw( no_plan );
iab papp ^[ : r ~/. code_templates/perl_application. pl^
iab pmod ^[ : r ~/. code_templates/perl_module. pm
Subscribe to:
Posts (Atom)