Tuesday, September 27, 2011

Perl One-liner

collection of one-liners.

# run contents of "my_file" as a program
perl my_file

# run debugger "stand-alone"
perl -d -e 42

# run program, but with warnings
perl -w my_file

# run program under debugger
perl -d my_file

# just check syntax, with warnings
perl -wc my_file

# useful at end of "find foo -print"
perl -nle unlink

# simplest one-liner program
perl -e 'print "hello world!\n"'

# add first and penultimate columns
perl -lane 'print $F[0] + $F[-2]'

# just lines 15 to 17
perl -ne 'print if 15 .. 17' *.pod

# print lines beween START and END in foo.txt to STDOUT
perl -ne 'print if /^START$/ .. /^END$/' foo.txt

# change all words "foo"s to "bar"s in every .c file and keep backups
perl -p -i.bak -e 's/\bfoo\b/bar/g' *.c

# substitute "xyz.math" to "abc.math" in every .html file and keep backups
perl -p -i.bak -e 's/xyz\.math/abc\.math/g' *.html

# insert department name after each title and keep backup
perl -p -i.bak -e 's##<title>Harvard .: #i' *.html<br /><br /> # change isolated occurrence of aaa to bbb in each file *.c or *.h<br /> perl -p -i.bak -e 's{\baaa\b}{bbb}g' *.[ch]<br /><br /> # command-line that prints the first 50 lines (cheaply) <br /> perl -pe 'exit if $. > 50' f1 f2 f3 ...<br /><br /> # a second way to print lines 3 to 5 of file foo.txt<br /> perl -pe 'exit if 3<$. && $.<5' foo.txt<br /><br /> # increments all numbers in foo.tx by 1<br /> perl -pe 's/(\d+)/ 1 + $1 /ge' foo.txt<br /><br /> # delete first 10 lines <br /> perl -i.old -ne 'print unless 1 .. 10' foo.txt<br /><br /> # change all the isolated oldvar occurrences to newvar <br /> perl -i.old -pe 's{\boldvar\b}{newvar}g' *.[chy]<br /><br /> # command-line that reverses the whole file by lines <br /> perl -e 'print reverse <>' file1 file2 file3 ....<br /><br /> # find palindromes <br /> perl -lne 'print if $_ eq reverse' /usr/dict/words<br /><br /> # find palindromes in a dictionary /usr/share/dict/words<br /> perl -lne 'print if $_ eq reverse' /usr/share/dict/words<br /><br /> # command-line that reverse all the bytes in a file <br /> perl -0777e 'print scalar reverse <>' f1 f2 f3 ...<br /><br /> # command-line that reverses the whole file by paragraphs <br /> perl -00 -e 'print reverse <>' file1 file2 file3 ....<br /><br /> # increment all numbers found in these files <br /> perl i.tiny -pe 's/(\d+)/ 1 + $1 /ge' file1 file2 ....<br /><br /> # command-line that shows each line with its characters backwards <br /> perl -nle 'print scalar reverse $_' file1 file2 file3 ....<br /><br /> # reverses order of characters in each line of foo.txt<br /> perl -nle 'print scalar reverse $_' foo.txt<br /><br /> # delete all but lines beween START and END <br /> perl -i.old -ne 'print unless /^START$/ .. /^END$/' foo.txt<br /><br /> # delete lines beween START and END and backup original file <br /> perl -i.old -ne 'print unless /^START$/ .. /^END$/' foo.txt<br /><br /> # binary edit (careful!) <br /> perl -i.bak -pe 's/Mozilla/Slopoke/g' /usr/local/bin/netscape<br /><br /> # delete first 10 lines in foo.txt and keep backup foo.txt.bak<br /> perl -i.bak -ne 'print unless 1 .. 10' foo.txt<br /><br /> # look for dup words <br /> perl -0777 -ne 'print "$.: doubled $_\n" while /\b(\w+)\b\s+\b\1\b/gi'<br /><br /> # command-line that prints the last 50 lines (expensively) <br /> perl -e 'lines = <>; print @@lines[ $#lines .. $#lines-50' f1 f2 f3 ... <br /><br /> # the always present hallo world program, adapted to a Math department<br /> perl -e 'print "Hello Mr Euler!\n"'<br /><br /> # rename in each file name the string aaa by bbb<br /> ls | perl -ne 'chomp; next unless -e; $o = $_; s/aaa/bbb/; next if -e; rename $o, $_'; <br /><br /> # add first and last column in each line of file foo.txt and print it out<br /> perl -lane 'print $F[0] + $F[-1]' foo.txt<br /><br /> # print lines 15 to 17 of file foo.txt<br /> perl -ne 'print if 15 .. 17' foo.txt<br /><br /> # the same but without backup. Remember the flags: "eat the pie"<br /> perl -p -i -e 's/foo/bar/g' *.c<br /><br /> # changes ^M newline characters to newlines <br /> perl -p -i -e 's/\012?\015/\n/g' $1<br /><br /> # the same but with all files with name filename<br /> perl -p -i -e 's/foo/bar' `find . -name "filename"`<br /><br /> # substitution can also be applied to binary files like test.ppm<br /> perl -p -i -e 's/255/127/g' test.ppm<br /><br /> # reverses lines of file foo.txt and print it<br /> perl -e 'print reverse <>' foo.txt<br /><br /> # reverses paragraphs in file foo.txt<br /> perl -00 -e 'print reverse <>' foo.txt<br /><br /> # look for duplicated words in a line<br /> perl -0777 -ne 'print "$.: doubled $_\n" while /\b(\w+)\b\s+\b\1\b/gi' foo.txt <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/08055786710159541445' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/08055786710159541445' rel='author' title='author profile'> <span itemprop='name'>virendersharma</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='http://virendersharma.blogspot.com/2011/09/perl-one-liner.html' itemprop='url'/> <a class='timestamp-link' href='https://virendersharma.blogspot.com/2011/09/perl-one-liner.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2011-09-27T01:53:00-07:00'>1:53 AM</abbr></a> </span> <span class='post-comment-link'> <a class='comment-link' href='https://virendersharma.blogspot.com/2011/09/perl-one-liner.html#comment-form' onclick=''> No comments: </a> </span> <span class='post-icons'> <span class='item-control blog-admin pid-463720878'> <a href='https://www.blogger.com/post-edit.g?blogID=7460292314936920729&postID=3857803255243426910&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> <div class='post-outer'> <div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> <meta content='7460292314936920729' itemprop='blogId'/> <meta content='4554536616839750317' itemprop='postId'/> <a name='4554536616839750317'></a> <h3 class='post-title entry-title' itemprop='name'> <a href='https://virendersharma.blogspot.com/2011/09/configuring-odbc-with-php-oracle.html'>configuring odbc with php & oracle.</a> </h3> <div class='post-header'> <div class='post-header-line-1'></div> </div> <div class='post-body entry-content' id='post-body-4554536616839750317' itemprop='description articleBody'> There are some steps for configuring odbc with php & oracle.<br /><br />Req: HTTPD, PHP, Oracle should be installed and functioned properly.<br /><br />Step 1. Install rpm package of unixODBC, which is available in rhel dvd.<br /><br />step 2. $ odbcinst -j <br /><br /> unixODBC 2.2.7<br /> DRIVERS............: /etc/odbcinst.ini<br /> SYSTEM DATA SOURCES: /etc/odbc.ini<br /> USER DATA SOURCES..: /home/auser/.odbc.ini<br /><br />step 3. For Oracle you need to copy all the libs to /usr/lib<br /><br /> cp /usr/lib/oracle/11.1/client/lib /usr/lib/<br /><br />step 4. /etc/odbcinst.ini Contents:<br /><br /> [Oracle]<br /> Description = Oracle ODBC Connection<br /> Driver = /usr/lib/oracle/11.1/client/lib/libsqora.so.11.1<br /> Setup =<br /> FileUsage =<br /> CPTimeout =<br /> CPReuse =<br /><br /> [Sybase]<br /> Description = Sybase ODBC Driver<br /> Driver = /opt/sybase/DataAccess/ODBC/lib/libsybdrvodb.so<br /> FileUsage = -1<br /><br />step 5. /etc/odbcinst.ini Contents:<br /><br /> [Oracle]<br /> Description = Oracle ODBC Connection<br /> Driver = /usr/lib/oracle/11.1/client/lib/libsqora.so.11.1<br /> Setup =<br /> FileUsage =<br /> CPTimeout =<br /> CPReuse =<br /><br /> [Sybase]<br /> Description = Sybase ODBC Driver<br /> Driver = /opt/sybase/DataAccess/ODBC/lib/libsybdrvodb.so<br /> FileUsage = -1<br /><br />Step 6. Testing DSN connections<br /> bash-2.05$ isql -v my_dsn username password<br /> +---------------------------------------+<br /> | Connected! |<br /> | |<br /> | sql-statement |<br /> | help [tablename] |<br /> | quit |<br /> | |<br /> +---------------------------------------+<br /> SQL><br /><br />Step 7. PHP Script to Test ODBC Connectivity:<br /><br /> <!--php<br /--><br /> $query = “select * from table_name”;<br /><br /> $conn = odbc_pconnect(“DSN”, “username”, “password”);<br /><br /> if(!$conn) die(“Connection failed”);<br /><br /> if($result = odbc_exec($conn, $query)) {<br /><br /> echo “Query returned : ” . odbc_num_rows($result) . “rows”;<br /><br /> odbc_result_all($result);<br /><br /> }<br /><br /> ?> <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> Posted by <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/08055786710159541445' itemprop='url'/> <a class='g-profile' href='https://www.blogger.com/profile/08055786710159541445' rel='author' title='author profile'> <span itemprop='name'>virendersharma</span> </a> </span> </span> <span class='post-timestamp'> at <meta content='http://virendersharma.blogspot.com/2011/09/configuring-odbc-with-php-oracle.html' itemprop='url'/> <a class='timestamp-link' href='https://virendersharma.blogspot.com/2011/09/configuring-odbc-with-php-oracle.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2011-09-27T01:35:00-07:00'>1:35 AM</abbr></a> </span> <span class='post-comment-link'> <a class='comment-link' href='https://virendersharma.blogspot.com/2011/09/configuring-odbc-with-php-oracle.html#comment-form' onclick=''> No comments: </a> </span> <span class='post-icons'> <span class='item-control blog-admin pid-463720878'> <a href='https://www.blogger.com/post-edit.g?blogID=7460292314936920729&postID=4554536616839750317&from=pencil' title='Edit Post'> <img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> </a> </span> </span> <div class='post-share-buttons goog-inline-block'> </div> </div> <div class='post-footer-line post-footer-line-2'> <span class='post-labels'> </span> </div> <div class='post-footer-line post-footer-line-3'> <span class='post-location'> </span> </div> </div> </div> </div> </div></div> </div> <div class='blog-pager' id='blog-pager'> <span id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='https://virendersharma.blogspot.com/' id='Blog1_blog-pager-newer-link' title='Newer Posts'>Newer Posts</a> </span> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='https://virendersharma.blogspot.com/search?updated-max=2011-09-27T01:35:00-07:00&max-results=7' id='Blog1_blog-pager-older-link' title='Older Posts'>Older Posts</a> </span> <a class='home-link' href='https://virendersharma.blogspot.com/'>Home</a> </div> <div class='clear'></div> <div class='blog-feeds'> <div class='feed-links'> Subscribe to: <a class='feed-link' href='https://virendersharma.blogspot.com/feeds/posts/default' target='_blank' type='application/atom+xml'>Posts (Atom)</a> </div> </div> </div></div> </div> <div id='sidebar-wrapper'> <div class='sidebar section' id='sidebar'><div class='widget Followers' data-version='1' id='Followers1'> <h2 class='title'>Followers</h2> <div class='widget-content'> <div id='Followers1-wrapper'> <div style='margin-right:2px;'> <div><script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <div id="followers-iframe-container"></div> <script type="text/javascript"> window.followersIframe = null; function followersIframeOpen(url) { gapi.load("gapi.iframes", function() { if (gapi.iframes && gapi.iframes.getContext) { window.followersIframe = gapi.iframes.getContext().openChild({ url: url, where: document.getElementById("followers-iframe-container"), messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, messageHandlers: { '_ready': function(obj) { window.followersIframe.getIframeEl().height = obj.height; }, 'reset': function() { window.followersIframe.close(); followersIframeOpen("https://www.blogger.com/followers/frame/7460292314936920729?colors\x3dCgt0cmFuc3BhcmVudBILdHJhbnNwYXJlbnQaByMwMDAwMDAiByM5OTk5OTkqByNmZmZmZmYyByMwMDAwMDA6ByMwMDAwMDBCByM5OTk5OTlKByMwMDAwMDBSByM5OTk5OTlaC3RyYW5zcGFyZW50\x26pageSize\x3d21\x26hl\x3den\x26origin\x3dhttps://virendersharma.blogspot.com"); }, 'open': function(url) { window.followersIframe.close(); followersIframeOpen(url); } } }); } }); } followersIframeOpen("https://www.blogger.com/followers/frame/7460292314936920729?colors\x3dCgt0cmFuc3BhcmVudBILdHJhbnNwYXJlbnQaByMwMDAwMDAiByM5OTk5OTkqByNmZmZmZmYyByMwMDAwMDA6ByMwMDAwMDBCByM5OTk5OTlKByMwMDAwMDBSByM5OTk5OTlaC3RyYW5zcGFyZW50\x26pageSize\x3d21\x26hl\x3den\x26origin\x3dhttps://virendersharma.blogspot.com"); </script></div> </div> </div> <div class='clear'></div> </div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <h2>Blog Archive</h2> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='https://virendersharma.blogspot.com/2011/'> 2011 </a> <span class='post-count' dir='ltr'>(2)</span> <ul class='hierarchy'> <li class='archivedate expanded'> <a class='toggle' href='javascript:void(0)'> <span class='zippy toggle-open'> ▼  </span> </a> <a class='post-count-link' href='https://virendersharma.blogspot.com/2011/09/'> September </a> <span class='post-count' dir='ltr'>(2)</span> <ul class='posts'> <li><a href='https://virendersharma.blogspot.com/2011/09/perl-one-liner.html'>Perl One-liner</a></li> <li><a href='https://virendersharma.blogspot.com/2011/09/configuring-odbc-with-php-oracle.html'>configuring odbc with php & oracle.</a></li> </ul> </li> </ul> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://virendersharma.blogspot.com/2009/'> 2009 </a> <span class='post-count' dir='ltr'>(4)</span> <ul class='hierarchy'> <li class='archivedate collapsed'> <a class='toggle' href='javascript:void(0)'> <span class='zippy'> ►  </span> </a> <a class='post-count-link' href='https://virendersharma.blogspot.com/2009/04/'> April </a> <span class='post-count' dir='ltr'>(4)</span> </li> </ul> </li> </ul> </div> </div> <div class='clear'></div> </div> </div><div class='widget Profile' data-version='1' id='Profile1'> <h2>About Me</h2> <div class='widget-content'> <dl class='profile-datablock'> <dt class='profile-data'> <a class='profile-name-link g-profile' href='https://www.blogger.com/profile/08055786710159541445' rel='author' style='background-image: url(//www.blogger.com/img/logo-16.png);'> virendersharma </a> </dt> </dl> <a class='profile-link' href='https://www.blogger.com/profile/08055786710159541445' rel='author'>View my complete profile</a> <div class='clear'></div> </div> </div></div> </div> <!-- spacer for skins that want sidebar and main to be the same height--> <div class='clear'> </div> </div> <!-- end content-wrapper --> </div></div> <!-- end outer-wrapper --> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/3935100173-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AEUoTZovWmPuYc10XNpHRTHpNYCw:1782853326643';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d7460292314936920729','//virendersharma.blogspot.com/2011/','7460292314936920729'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '7460292314936920729', 'title': 'virendersharma', 'url': 'https://virendersharma.blogspot.com/2011/', 'canonicalUrl': 'http://virendersharma.blogspot.com/2011/', 'homepageUrl': 'https://virendersharma.blogspot.com/', 'searchUrl': 'https://virendersharma.blogspot.com/search', 'canonicalHomepageUrl': 'http://virendersharma.blogspot.com/', 'blogspotFaviconUrl': 'https://virendersharma.blogspot.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': false, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': '', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22virendersharma - Atom\x22 href\x3d\x22https://virendersharma.blogspot.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22virendersharma - RSS\x22 href\x3d\x22https://virendersharma.blogspot.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22virendersharma - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/7460292314936920729/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/f344cc2f9db0fa03', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'archive', 'pageName': '2011', 'pageTitle': 'virendersharma: 2011'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'isResponsive': false, 'isAlternateRendering': false, 'isCustom': false}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'virendersharma', 'description': '', 'url': 'https://virendersharma.blogspot.com/2011/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': true, 'isLabelSearch': false, 'archive': {'year': 2011, 'rangeMessage': 'Showing posts from 2011'}}}]); _WidgetManager._RegisterWidget('_NavbarView', new _WidgetInfo('Navbar1', 'navbar', document.getElementById('Navbar1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/113638092-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/828616780-lightbox_bundle.css'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_FollowersView', new _WidgetInfo('Followers1', 'sidebar', document.getElementById('Followers1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_ProfileView', new _WidgetInfo('Profile1', 'sidebar', document.getElementById('Profile1'), {}, 'displayModeFull')); </script> </body> </html>