<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Vidul Nikolaev Petrov: Category Perl</title>
    <link>http://www.vidul.com/articles/category/perl</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Filtering Lists</title>
      <description>&lt;p&gt;&lt;b&gt;Ruby&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;arr&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;..&lt;/span&gt;&lt;span class="number"&gt;10&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;to_a&lt;/span&gt;
&lt;span class="ident"&gt;arr&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;select&lt;/span&gt;&lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;e&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;e&lt;/span&gt; &lt;span class="punct"&gt;%&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt; &lt;span class="punct"&gt;!=&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Python&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;arr&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;range&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;11&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="ident"&gt;e&lt;/span&gt; &lt;span class="keyword"&gt;for&lt;/span&gt; &lt;span class="ident"&gt;e&lt;/span&gt; &lt;span class="keyword"&gt;in&lt;/span&gt; &lt;span class="ident"&gt;arr&lt;/span&gt; &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;e&lt;/span&gt; &lt;span class="punct"&gt;%&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Perl&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="attribute"&gt;@arr&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;..&lt;/span&gt;&lt;span class="number"&gt;10&lt;/span&gt;&lt;span class="punct"&gt;);&lt;/span&gt;
&lt;span class="ident"&gt;grep&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="global"&gt;$_&lt;/span&gt; &lt;span class="punct"&gt;%&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="attribute"&gt;@arr&lt;/span&gt;&lt;span class="punct"&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 01 Dec 2008 01:33:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:2468634b-43aa-4ec7-b29f-d027663746e1</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/12/01/filtering-lists</link>
      <category>Python</category>
      <category>Ruby</category>
      <category>Perl</category>
      <category>lists</category>
      <trackback:ping>http://www.vidul.com/articles/trackback/99</trackback:ping>
    </item>
    <item>
      <title>Ultra Tiny Address Book</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;#!/usr/bin/perl&lt;/span&gt;

&lt;span class="global"&gt;$s&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;shift&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="global"&gt;$&amp;quot;&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;
&lt;span class="global"&gt;$/&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="global"&gt;$\&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="global"&gt;$_&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="constant"&gt;DATA&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="attribute"&gt;@_&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="regex"&gt;(.*?$s.*)&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;gi&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;

&lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;@_&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;

&lt;span class="ident"&gt;__DATA__&lt;/span&gt;

&lt;span class="ident"&gt;me&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;some address&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ident"&gt;my_phone_here&lt;/span&gt;
&lt;span class="ident"&gt;etc&lt;/span&gt;&lt;span class="punct"&gt;...&lt;/span&gt;
&lt;span class="ident"&gt;etc&lt;/span&gt;&lt;span class="punct"&gt;...&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 29 Oct 2008 07:18:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:c9bb461f-6a01-4956-8c70-5a844738c673</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/10/29/ultra-tiny-address-book</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>tiny</category>
      <trackback:ping>http://www.vidul.com/articles/trackback/92</trackback:ping>
    </item>
    <item>
      <title>downloader</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;#!/usr/bin/perl

use strict;
use warnings;
use WWW::Mechanize;
use LWP::Simple;
use Data::Dumper;
use Time::HiRes qw( usleep tv_interval gettimeofday );
$|++;
my $url  = shift || die &amp;quot;no url given!\n&amp;quot;;
my $ext  = shift || 'mp3'; #die &amp;quot;no file extention given!\n&amp;quot;;
my $mech = WWW::Mechanize-&amp;gt;new(agent=&amp;gt;&amp;quot;Mozilla/5.0&amp;quot;);
my $ua   = LWP::UserAgent-&amp;gt;new;
my %seen;

$mech-&amp;gt;get($url);
$ua-&amp;gt;timeout(5);

my $links = $mech-&amp;gt;links;

no warnings;
my $c = 0;
for my $link ( @{$links} ) {
        my $url  = $link-&amp;gt;url_abs;
        my $res  = $ua-&amp;gt;head($url);
        my $http_res   = HTTP::Response-&amp;gt;new($res);
        my $abs_name   = $http_res -&amp;gt;{'_rc'}-&amp;gt;{'_previous'}-&amp;gt;{'_headers'}-&amp;gt;{'location'};
        my ($rel_name) = $abs_name =~ /.+\/(.+)$/;
        my $local_name = $rel_name;

        $seen{$local_name}++ and next;

        if( $rel_name =~ /\Q$ext\E$/i ){
                $rel_name =~ s/\%\d+/ /g;
                $rel_name =~ s/(.{35}).+/$1.../;
                print(pack('A45', &amp;quot;[$rel_name]&amp;quot;), &amp;quot;  is being downloaded ... &amp;quot;);
                my $s_time = q{};
                my $e_time = q{};
                my $flag = [];

                for( 1..5 ){
                        local $SIG{ALRM} = sub { die(&amp;quot;timeout&amp;quot;) };
                        eval {
                           alarm(10);
                           $flag = [head($abs_name)];
                           alarm(0);
                        };
                        next if $@ =~ m|timeout|;
                        last if $@ !~ m|timeout|;
                }

                if( $flag-&amp;gt;[0] ){
                        $c++;
                        $s_time = [gettimeofday];
                        getstore($abs_name, $c.&amp;quot;-&amp;quot;.$local_name);
                        $e_time = tv_interval ($s_time, [gettimeofday]);
                }

                $e_time =  $e_time ? $e_time . &amp;quot; seconds&amp;quot; : 'less than 1 milisecond';
                print &amp;quot;timeout failure in $e_time seconds :(\n&amp;quot; and next if $@;
                print &amp;quot;done in $e_time\n&amp;quot;;
        }
}

`ruby -e 'Dir[&amp;quot;*&amp;quot;].each{|f| File.rename f, f.sub(/^\d+-/, &amp;quot;&amp;quot;)}'`;
`ruby -e 'Dir[&amp;quot;*&amp;quot;].each{|f| File.rename f, f.gsub(/%20/, &amp;quot;_&amp;quot;)}'`;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 09 Jun 2008 02:09:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a51394b9-1530-46c3-aa0f-585324581bb5</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/06/09/downloader</link>
      <category>Perl</category>
      <category>administration</category>
    </item>
    <item>
      <title>How to find free domain name</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;#!/usr/bin/perl&lt;/span&gt;

&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="ident"&gt;strict&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="ident"&gt;warnings&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;

&lt;span class="ident"&gt;my&lt;/span&gt; &lt;span class="global"&gt;$dom&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;shift&lt;/span&gt; &lt;span class="punct"&gt;||&lt;/span&gt; &lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;missing name&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;
&lt;span class="ident"&gt;my&lt;/span&gt; &lt;span class="global"&gt;$res&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;qx&lt;/span&gt;&lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="ident"&gt;whois&lt;/span&gt; &lt;span class="global"&gt;$dom&lt;/span&gt;&lt;span class="punct"&gt;};&lt;/span&gt;

&lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="global"&gt;$1&lt;/span&gt; &lt;span class="punct"&gt;.&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;for '$dom'&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ident"&gt;if&lt;/span&gt; &lt;span class="global"&gt;$res&lt;/span&gt; &lt;span class="punct"&gt;=~&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="regex"&gt;(no&lt;span class="escape"&gt;\s&lt;/span&gt;+whois&lt;span class="escape"&gt;\s&lt;/span&gt;+server&lt;span class="escape"&gt;\s&lt;/span&gt;+)&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;$dom is free&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;    &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="global"&gt;$res&lt;/span&gt; &lt;span class="punct"&gt;=~&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="regex"&gt;no&lt;span class="escape"&gt;\s&lt;/span&gt;+match|does&lt;span class="escape"&gt;\s&lt;/span&gt;+not&lt;span class="escape"&gt;\s&lt;/span&gt;+exist&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;$dom is reserved&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;

&lt;span class="comment"&gt;__END__
_whois 123456.com
123456.com is reserved

_whois _123456_.com
_123456_.com is free&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Fri, 22 Feb 2008 14:23:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:4e17a074-f62c-4d7f-ae7b-8322c5e461e9</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/22/how-to-find-free-domain-name</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>money</category>
    </item>
    <item>
      <title>Scalar || List context</title>
      <description>&lt;b&gt;Perl&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt; $a  = (&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;); # $a is &amp;quot;c&amp;quot; - the last element
($a) = (&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;); # $a is &amp;quot;a&amp;quot; - the first element&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;b&gt;Ruby&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt; &lt;span class="ident"&gt;obj&lt;/span&gt;        &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;c&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;]&lt;/span&gt; &lt;span class="comment"&gt;# obj is Array - [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;]&lt;/span&gt;
 &lt;span class="ident"&gt;obj&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;c&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;c&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;]&lt;/span&gt; &lt;span class="comment"&gt;# obj is String - &amp;quot;a&amp;quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 12 Feb 2008 13:12:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:36d75a0e-9bab-4684-a3a6-abd63e23e314</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/12/scalar-array-context</link>
      <category>programming</category>
      <category>Ruby</category>
      <category>Perl</category>
    </item>
    <item>
      <title>Perl script opening (vim variant)</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#!/bin/bash

file=$1

if [ -e $file ]
then
        vim $file
else
        touch $file
        echo '#!/usr/bin/perl' &amp;gt; $file
        echo '' &amp;gt;&amp;gt; $file
        echo 'use strict;' &amp;gt;&amp;gt; $file
        echo 'use warnings;' &amp;gt;&amp;gt; $file
        echo 'use diagnostics;' &amp;gt;&amp;gt; $file
        echo '' &amp;gt;&amp;gt; $file
        chmod +x $file
        vim $file
fi&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 04 Feb 2008 14:57:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:288028e0-f9e9-4bf1-837c-639d92733d9b</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/04/perl-script-opening-vim-variant</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>UNIX</category>
    </item>
    <item>
      <title>JAPH with AUTOLOAD</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;
#!/usr/bin/perl

JAPH-&amp;gt;Just-&amp;gt;Another-&amp;gt;Perl-&amp;gt;Hacker;

package JAPH;

sub AUTOLOAD { bless [print+($AUTOLOAD=~/::(.+)/)[0], q/ /] } sub DESTROY {}
 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sun, 03 Feb 2008 07:20:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:2d976a2a-69ba-4861-87ce-7afff2f3cf37</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/03/japh-with-autoload</link>
      <category>Perl</category>
      <category>japh</category>
    </item>
    <item>
      <title>HTML To WIKI converter</title>
      <description>&lt;p&gt;Perl script (thanks to the author of &lt;a href="http://search.cpan.org/~diberri/HTML-WikiConverter-0.61/lib/HTML/WikiConverter.pm"&gt;&lt;span class="caps"&gt;HTML&lt;/span&gt;::WikiConverter&lt;/a&gt;):&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;#!/usr/bin/perl&lt;/span&gt;

&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="ident"&gt;strict&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="ident"&gt;warnings&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="constant"&gt;HTML&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;WikiConverter&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="constant"&gt;Perl6&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Slurp&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;

&lt;span class="ident"&gt;my&lt;/span&gt; &lt;span class="global"&gt;$file_name&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;shift&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;

&lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;f&lt;/span&gt; &lt;span class="global"&gt;$file_name&lt;/span&gt; &lt;span class="keyword"&gt;or&lt;/span&gt; &lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No file given!&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;

&lt;span class="ident"&gt;my&lt;/span&gt; &lt;span class="global"&gt;$wiki&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;new&lt;/span&gt; &lt;span class="constant"&gt;HTML&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;WikiConverter&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;dialect&lt;/span&gt;&lt;span class="punct"&gt;=&amp;gt;'&lt;/span&gt;&lt;span class="string"&gt;MediaWiki&lt;/span&gt;&lt;span class="punct"&gt;');&lt;/span&gt;

&lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="global"&gt;$wiki&lt;/span&gt;&lt;span class="punct"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ident"&gt;html2wiki&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;slurp&lt;/span&gt; &lt;span class="global"&gt;$file_name&lt;/span&gt;&lt;span class="punct"&gt;);&lt;/span&gt;

&lt;span class="comment"&gt;__END__

  Supported dialects:  

  DokuWiki
  Kwiki
  MediaWiki
  MoinMoin
  Oddmuse
  PbWiki
  PhpWiki
  PmWiki
  SlipSlap
  TikiWiki
  UseMod
  WakkaWiki
  WikkaWiki&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sat, 02 Feb 2008 05:59:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:6d7a8f4f-4ae0-44e3-a6a3-2c9d2314240f</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/02/html-to-wiki-converter</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>wiki</category>
      <category>converter</category>
    </item>
    <item>
      <title>File Splitter</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;use strict;
use Getopt::Std;
use File::Basename;

getopts('scf:p:'); 

our($opt_s, $opt_c, $opt_f, $opt_p);

my $file = $opt_f;
my $size = $opt_p || 1;
my $len  = 1024;
my $c = 1;
my ($buf, $counter);

-f $file or usage();

if($opt_s){
    $size = 1024 * $size;

    open IN, &amp;quot;&amp;lt; $file&amp;quot; or die &amp;quot;cannot open_r $file $!&amp;quot;;
    open OUT, &amp;quot;&amp;gt; $file.$c&amp;quot;  or die &amp;quot;cannot open_w $file $!&amp;quot;;
    binmode IN;
    binmode OUT;

    while(read(IN, $buf, $len)){
        $counter++;
        if($counter &amp;gt; $size){
            $counter = 0;
            $c++;
            close OUT;
            open OUT, &amp;quot;&amp;gt; $file.$c&amp;quot;  or die &amp;quot;cannot open_w $file $!&amp;quot;;
            binmode OUT;
        } 
        print OUT $buf
    }
} elsif($opt_c) {
    my @files = grep { -f and /^$file\.\d+$/ } glob '*';
    my $newfile = &amp;quot;splitter_$file&amp;quot;;
    open OUT, &amp;quot;&amp;gt;&amp;gt; $newfile&amp;quot; or die &amp;quot;cannot open_w $file $!&amp;quot;;
    binmode OUT;
    map { $_ =~ s/^$file\.// } @files;
    for(sort {$a&amp;lt;=&amp;gt;$b} @files ){
        open IN, &amp;quot;$file.$_&amp;quot; or die &amp;quot;cannot open_r $file $!&amp;quot;;
        binmode IN;
        print OUT $_ while &amp;lt;IN&amp;gt;;
        close IN;
    }
} else {
    usage()
}

sub usage{
    my $pro = basename($0);
    print &amp;lt;&amp;lt;SQ;

$pro (-s|-c) -p piece size -f filename

    -s    split a file into pieces
    -c    collect a file from pieces
    -p     chunk size (defaults to 1MB)
    -f     file to be processed
SQ
    exit 1
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Fri, 18 Jan 2008 22:28:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:39d0f585-3124-44cf-a51a-eeb818f55b44</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/01/18/file-splitter</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>splitter</category>
    </item>
    <item>
      <title>Sort By Part Of  Filename</title>
      <description>&lt;p&gt;Assume that we have directory, containing files like:&lt;br/&gt;&lt;/p&gt;


	&lt;p&gt;&lt;i&gt;part_1.txt&lt;/i&gt; &lt;br/&gt;
&lt;i&gt;part_2.txt&lt;/i&gt; &lt;br/&gt;
&lt;i&gt;part_100.txt&lt;/i&gt;&lt;br/&gt;
&lt;i&gt;part_200.txt&lt;/i&gt;&lt;br/&gt;&lt;/p&gt;


In case that we are interested in /(\d+)\.\w+$/ as part of the sorting criteria:&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;Perl&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;# short but unefficient
@a = sort {($a =~ /(\d+)\.\w+$/)[0] &amp;lt;=&amp;gt; ($b =~  /(\d+)\.\w+$/)[0]} &amp;lt;*&amp;gt;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;
&lt;b&gt;Ruby&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;regex&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Regexp&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;(/&lt;/span&gt;&lt;span class="regex"&gt;(&lt;span class="escape"&gt;\d&lt;/span&gt;+)&lt;span class="escape"&gt;\.\w&lt;/span&gt;+$&lt;/span&gt;&lt;span class="punct"&gt;/)&lt;/span&gt;

&lt;span class="comment"&gt;# enum.sort {| a, b | block } =&amp;gt; array&lt;/span&gt;
&lt;span class="constant"&gt;Dir&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;*&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;].&lt;/span&gt;&lt;span class="ident"&gt;grep&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;regex&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;sort&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
  &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;match&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;regex&lt;/span&gt;&lt;span class="punct"&gt;)[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;to_i&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;=&amp;gt;&lt;/span&gt; &lt;span class="ident"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;match&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;regex&lt;/span&gt;&lt;span class="punct"&gt;)[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;to_i&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="comment"&gt;# enum.sort_by {| obj | block } =&amp;gt; array&lt;/span&gt;
&lt;span class="constant"&gt;Dir&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;*&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;].&lt;/span&gt;&lt;span class="ident"&gt;grep&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;regex&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;sort_by&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
  &lt;span class="ident"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;match&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;regex&lt;/span&gt;&lt;span class="punct"&gt;)[&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;to_i&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sat, 12 Jan 2008 01:57:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:ecedb417-3a18-4751-a636-3d351e97d1fc</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/01/12/sort-by-part-of-filename</link>
      <category>Ruby</category>
      <category>Perl</category>
      <category>sorting</category>
    </item>
    <item>
      <title>Dynamically Define Methods</title>
      <description>&lt;b&gt;Perl&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;package MyClass;
package main;

*MyClass::from_my_class = sub { 
   print &amp;quot;defined in &amp;quot;, __PACKAGE__, &amp;quot;\n&amp;quot; 
};

MyClass::from_my_class();&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;b&gt;Ruby&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;String&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;self.from_string&lt;/span&gt;
    &lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;defined in &lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;name&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="global"&gt;$/&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="constant"&gt;String&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="ident"&gt;from_string&lt;/span&gt;
&lt;span class="constant"&gt;String&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt; &lt;span class="ident"&gt;from_string&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Fri, 11 Jan 2008 00:21:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:6dc12cb4-d95d-408a-b488-75de7cc43b19</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/01/11/dynamically-define-methods</link>
      <category>Ruby</category>
      <category>Perl</category>
      <category>OOP</category>
      <category>methods</category>
    </item>
    <item>
      <title>perldoc usage</title>
      <description>function manual:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;perldoc -f grep&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

search the text in perlfaq:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;perldoc -q grep&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

module content:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;perldoc -m IO::Socket&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

module absolute filename:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;perldoc -l IO::Socket&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

and of course:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;perldoc perl&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 09 Jan 2008 03:59:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:5b97a107-daa4-4b39-aab2-e273e4e2383d</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/01/09/perldoc-usage</link>
      <category>Perl</category>
      <category>shortcuts</category>
    </item>
    <item>
      <title>Just_Another_Perl_Hacker.pm</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;package Just_Another_Perl_Hacker; $$&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;perl -MJust_Another_Perl_Hacker -e 's|(?&amp;lt;=\w)_| |g &amp;amp;&amp;amp; tr/:://d &amp;amp;&amp;amp; print for keys %main::'&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 08 Jan 2008 22:03:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:d8b94c28-ed5a-4210-90d5-7632e11cdac5</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/01/08/japh-and-import</link>
      <category>Perl</category>
      <category>japh</category>
    </item>
    <item>
      <title>Getting ip addresses from log file</title>
      <description>&lt;p&gt;&lt;b&gt;perl -ne&lt;/b&gt; &lt;strong style="color:gray;"&gt;&amp;#8216;&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;$_{$1}=1 if /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/;eof&amp;amp;&amp;amp;{print join(&amp;quot;\n&amp;quot;, sort keys %_)}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&amp;#8216;&lt;/strong&gt; access.log&lt;/p&gt;</description>
      <pubDate>Tue, 08 Jan 2008 02:10:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:d63b1668-7384-4bdc-bc48-0b3f1662ec11</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/01/08/getting-ip-addresses-from-log-file</link>
      <category>Perl</category>
      <category>oneliners</category>
      <category>administration</category>
    </item>
    <item>
      <title>Fast ICMP scanner (Perl oneliner)</title>
      <description>&lt;p&gt;&lt;span style="color:#444;"&gt;[localhost]$&lt;/span&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;time perl -MNet::Ping -e '$p = Net::Ping-&amp;gt;new();
@hosts = qw(
127.0.0.1 
172.16.0.1 
172.16.0.2 
172.16.0.5 
172.16.0.254);
#the significant detail
$p-&amp;gt;{&amp;quot;timeout&amp;quot;} = 0.005; 
for (@hosts) { print &amp;quot;$_ is &amp;quot;.($p-&amp;gt;ping($_) ? &amp;quot;up&amp;quot; : &amp;quot;down&amp;quot;).$/ }'&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;


&lt;div style="color:#333;padding:1px;margin-top:5px;"&gt;
127.0.0.1 is up&lt;br/&gt;
172.16.0.1 is up&lt;br/&gt;
172.16.0.2 is down&lt;br/&gt;
172.16.0.5 is up&lt;br/&gt;
172.16.0.254 is down&lt;br/&gt;
&lt;br/&gt;
real    0m0.062s&lt;br/&gt;
user    0m0.040s&lt;br/&gt;
sys     0m0.000s&lt;br/&gt;
&lt;/div&gt;</description>
      <pubDate>Tue, 08 Jan 2008 01:05:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:81ce35e8-4ee2-4ecc-a218-34cd31a66671</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/01/08/fast-icmp-scanner-perl-one-liner</link>
      <category>Perl</category>
      <category>administration</category>
      <category>oneliners</category>
    </item>
    <item>
      <title>nmap cleaner in Perl</title>
      <description>&lt;p&gt;$&amp;#8221;=&amp;#8221; @ARGV&amp;#8221;;/^\D+/||print for`nmap$&amp;#8221;`&lt;/p&gt;</description>
      <pubDate>Sat, 29 Dec 2007 08:26:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:a9bda6c6-90d0-43f8-b79f-f5c38a552771</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/12/29/nmap-cleaner-in-perl</link>
      <category>Perl</category>
      <category>scripts</category>
    </item>
    <item>
      <title>List Values and Arrays</title>
      <description>&lt;p&gt;&lt;b&gt;Perl&lt;/b&gt;&lt;br/&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;($a, $b) = (1, 2);
 @arr    = (1, 2);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Python&lt;/b&gt;&lt;br/&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_python "&gt; a, b = 1, 2
 arr  = 1, 2;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Ruby&lt;/b&gt;&lt;br/&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt; &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;b&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;
 &lt;span class="ident"&gt;arr&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;
 &lt;span class="ident"&gt;arr&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;*[&lt;/span&gt;&lt;span class="number"&gt;11&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;22&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt; &lt;span class="comment"&gt;# the same as &lt;/span&gt;
 &lt;span class="ident"&gt;arr&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;11&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;22&lt;/span&gt;&lt;span class="punct"&gt;]].&lt;/span&gt;&lt;span class="ident"&gt;flatten&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
the &amp;#8217;*&amp;#8217; example was stolen from &lt;a href="http://ola-bini.blogspot.com/search/label/metaprogramming"&gt;Ola Bini&amp;#8217;s&lt;/a&gt; blog&lt;/p&gt;</description>
      <pubDate>Fri, 30 Nov 2007 07:28:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:f9609b7a-860e-4484-a6ed-81614eca7303</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/11/30/list-values-and-arrays</link>
      <category>programming</category>
      <category>Ruby</category>
      <category>Perl</category>
      <category>shortcuts</category>
    </item>
  </channel>
</rss>
