Perl Script to Fetch PNR Status reservation on train from Indian Railways
The code below is a perl script that fetches the PNR status from the indianrail.gov.in website and displays it on the command line.
Warning: No one is authorised to make any type of commercial usage like putting web advertisements or SMS service and Reproducing/Transmitting/Storing in its database, any content of www.indianrail.gov.in website, without prior written permission from Indian Railways. Violators will be severely prosecuted.
Ok, That is the warning you see on Indian Railways site to check the PNR Status. The following code written in perl fetches content from Indian Railways site, however it does not store reproduce or does anything with the data. It justs fetches the PNR Status and puts it out on the command line prompt.
This code is for educational purpose only anyone using the code for any purpose should contact Indian Railways before doing so. I am not responsible for any outcomes by using the code below.
Requires: WWW::Mechanize module and PERL.
Usage:
./pnr.pl <PNR NUMBER>
EDIT: The Railways have changed their interface, so the script also have changed.
New Script
#!/usr/bin/perl use WWW::Mechanize; my $mech = WWW::Mechanize->new(); $pnr = $ARGV[0]; $mech->get("http://www.indianrail.gov.in/pnr_Enq.html"); $part1 = substr($pnr,0,3); $part2 = substr($pnr,3); print " Fetching for PNR $part1-$part2 \n\n"; $mech->submit_form( form_number => 1, fields => { lccp_pnrno1 => $part1, lccp_pnrno2 => $part2, } ); $content = $mech->response->content; $content =~ s|<body>(.*?)</body>|$1|si; $content =~ s|<(.*?)>||sig; if($content =~ m|(Passenger [1-6].*?)Chart|sig) { print $1; }
Outdated script
#!/usr/bin/perl use WWW::Mechanize; my $mech = WWW::Mechanize->new(); $pnr = $ARGV[0]; $mech->get("http://www.indianrail.gov.in"); $part1 = substr($pnr,0,3); $part2 = substr($pnr,3); print " Fetching for PNR $part1-$part2 \n\n"; $mech->submit_form( form_number => 1, fields => { lccp_pnrno1 => $part1, lccp_pnrno2 => $part2, } ); $content = $mech->response->content; $content =~ s|<body>(.*?)</body>|$1|si; $content =~ s|<(.*?)>||sig; if($content =~ m|(Passenger [1-6].*?)Chart|sig) { print $1; }
- Train Pnr Print Division
- Perl Script Which Fetches Output From Search Api
- Working Sms Script
- Script Brontok Remover
- Perl Fetching
- Perl Here Document
- Perl Dbi Tutorial
- Install Perl Ubuntu
- Php Json In Perl
- Perl Read Media File
- Perl Hash Remove Node
- Json Perl Join File
- Yahoo Messenger Perl Client
- Division Of An Array Element In Perl
- Perl How To Remove An Element From An Array

Comments
Post new comment