53 lines
3.8 KiB
Markdown
53 lines
3.8 KiB
Markdown
|
---
|
||
|
title: Getopt::Long と Pod::Usage の使用例
|
||
|
author: kazu634
|
||
|
date: 2009-11-04
|
||
|
url: /2009/11/04/_1381/
|
||
|
wordtwit_post_info:
|
||
|
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4903;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
|
||
|
categories:
|
||
|
- Perl
|
||
|
|
||
|
---
|
||
|
<div class="section">
|
||
|
<p>
|
||
|
CPANでの説明そのものですけど、貼り付けておきますね。
|
||
|
</p>
|
||
|
|
||
|
<pre class="syntax-highlight">
|
||
|
<span class="synComment"># === Libraries ===</span>
|
||
|
<span class="synStatement">use strict</span>;
|
||
|
<span class="synStatement">use warnings</span>;
|
||
|
<span class="synStatement">use </span>Getopt::Long;
|
||
|
<span class="synStatement">use </span>Pod::Usage;
|
||
|
<span class="synStatement">my</span> <span class="synIdentifier">$man</span> = <span class="synConstant"></span>;
|
||
|
<span class="synStatement">my</span> <span class="synIdentifier">$help</span> = <span class="synConstant"></span>;
|
||
|
<span class="synComment">## Parse options and print usage if there is a syntax error,</span>
|
||
|
<span class="synComment">## or if usage was explicitly requested.</span>
|
||
|
GetOptions( <span class="synConstant">'help|?'</span> => <span class="synIdentifier">\$help</span>, <span class="synConstant">man </span>=> <span class="synIdentifier">\$man</span> ) <span class="synStatement">or</span> pod2usage(<span class="synConstant">2</span>);
|
||
|
pod2usage(<span class="synConstant">1</span>) <span class="synStatement">if</span> <span class="synIdentifier">$help</span>;
|
||
|
pod2usage( -<span class="synConstant">verbose </span>=> <span class="synConstant">2</span> ) <span class="synStatement">if</span> <span class="synIdentifier">$man</span>;
|
||
|
<span class="synComment">## If no arguments were given, then allow STDIN to be used only</span>
|
||
|
<span class="synComment">## if it's not connected to a terminal (otherwise print usage)</span>
|
||
|
pod2usage(<span class="synConstant">"</span><span class="synIdentifier">$0</span><span class="synConstant">: No files given."</span>) <span class="synStatement">if</span> ( ( <span class="synIdentifier">@ARGV</span> == <span class="synConstant"></span> ) && ( <span class="synStatement">-t</span> STDIN ) );
|
||
|
<span class="synComment">__END__</span>
|
||
|
<span class="synStatement">=head1</span><span class="synConstant"> NAME</span>
|
||
|
<span class="synComment">sample - Using GetOpt::Long and Pod::Usage</span>
|
||
|
<span class="synStatement">=head1</span><span class="synConstant"> SYNOPSIS</span>
|
||
|
<span class="synComment">sample [options] [file ...]</span>
|
||
|
<span class="synComment">Options:</span>
|
||
|
<span class="synComment">-help brief help message</span>
|
||
|
<span class="synComment">-man full documentation</span>
|
||
|
<span class="synStatement">=head1</span><span class="synConstant"> OPTIONS</span>
|
||
|
<span class="synStatement">=over</span><span class="synComment"> </span><span class="synConstant">8</span>
|
||
|
<span class="synStatement">=item</span><span class="synConstant"> </span><span class="synIdentifier">B<-help></span>
|
||
|
<span class="synComment">Print a brief help message and exits.</span>
|
||
|
<span class="synStatement">=item</span><span class="synConstant"> </span><span class="synIdentifier">B<-man></span>
|
||
|
<span class="synComment">Prints the manual page and exits.</span>
|
||
|
<span class="synStatement">=back</span>
|
||
|
<span class="synStatement">=head1</span><span class="synConstant"> DESCRIPTION</span>
|
||
|
<span class="synIdentifier">B<This program></span><span class="synComment"> will read the given input </span><span class="synIdentifier">file(s)</span><span class="synComment"> and do something</span>
|
||
|
<span class="synComment">useful with the contents thereof.</span>
|
||
|
<span class="synStatement">=cut</span>
|
||
|
</pre>
|
||
|
</div>
|