110 lines
3.5 KiB
Markdown
110 lines
3.5 KiB
Markdown
|
---
|
|||
|
title: スクリプト起動時に引数をもらう
|
|||
|
author: kazu634
|
|||
|
date: 2007-12-08
|
|||
|
url: /2007/12/08/_721/
|
|||
|
wordtwit_post_info:
|
|||
|
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";s:1:"1";s:5:"delay";s:1:"0";s:7:"enabled";s:1:"1";s:10:"separation";i: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:3423;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
|
|||
|
categories:
|
|||
|
- Perl
|
|||
|
|
|||
|
---
|
|||
|
<div class="section">
|
|||
|
<p>
|
|||
|
とりあえず現状isbn10を決めうちして、isbn13のチェックデジットを求めるスクリプトまではできています。今回は、スクリプトを起動したときにisbn10の入力をもらって、計算できるようにしてみました(ただしエラー処理だとか、もらった値が厳密に10桁の数字なのかどうかとかは検討していません)。
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
調べてみた結果、perlスクリプトが起動時にもらった引数は「@ARGV」という配列に格納されるということなので、そいつを活用してやれば大丈夫そうでした。ちなみに
|
|||
|
</p>
|
|||
|
|
|||
|
<blockquote>
|
|||
|
<p>
|
|||
|
perl temp.pl 1406556601 1406556602
|
|||
|
</p>
|
|||
|
</blockquote>
|
|||
|
|
|||
|
<p>
|
|||
|
とした場合には
|
|||
|
</p>
|
|||
|
|
|||
|
<table border="1">
|
|||
|
<tr>
|
|||
|
<th>
|
|||
|
</th>
|
|||
|
|
|||
|
<th>
|
|||
|
1
|
|||
|
</th>
|
|||
|
</tr>
|
|||
|
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
1406556601
|
|||
|
</td>
|
|||
|
|
|||
|
<td>
|
|||
|
1406556602
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
|
|||
|
<p>
|
|||
|
というように@ARGVには格納されます。その点だけ注意かな。というわけで、こんな感じになりました。
|
|||
|
</p>
|
|||
|
|
|||
|
<pre class="lang:perl decode:true">use strict;
|
|||
|
use warnings;
|
|||
|
# 変数の宣言
|
|||
|
my $temp_isbn;
|
|||
|
my $_odd;
|
|||
|
my $_even;
|
|||
|
my $c_degit;
|
|||
|
my $temp;
|
|||
|
print @ARGV[0];
|
|||
|
# 適当なisbn10を代入して、978をつける
|
|||
|
$temp_isbn = '978';
|
|||
|
$temp_isbn = $temp_isbn . $ARGV[0];
|
|||
|
print "isbn: " . $temp_isbn . "\n";
|
|||
|
# 一桁ずつばらして配列@fooに代入
|
|||
|
my @foo = split(//, $temp_isbn);
|
|||
|
# 奇数の処理
|
|||
|
# @fooには13桁のisbnが入っている。配列は0-12まで。
|
|||
|
# @foo[12]はチェックデジットなので、無視する。
|
|||
|
print 'Odd Number: ';
|
|||
|
for (my $i = 0; $i <= 11; $i = $i + 2){
|
|||
|
$_odd += $foo[$i];
|
|||
|
print $foo[$i] . " ";
|
|||
|
}
|
|||
|
print "\n";
|
|||
|
# 偶数の処理。以下同文。
|
|||
|
print 'Even Number: ';
|
|||
|
for (my $i = 1; $i <= 11; $i = $i + 2){
|
|||
|
$_even += $foo[$i];
|
|||
|
print $foo[$i] . " ";
|
|||
|
}
|
|||
|
print "\n";
|
|||
|
$temp = $_odd + ($_even * 3);
|
|||
|
print "calculating ...: " . $_odd . "+ (" . $_even . " * 3) = " . $temp . "\n";
|
|||
|
$temp = $temp % 10;
|
|||
|
$c_degit = 10 - $temp;
|
|||
|
print $c_degit . "\n";</pre>
|
|||
|
|
|||
|
<h4>
|
|||
|
関連記事
|
|||
|
</h4>
|
|||
|
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<a href="http://d.hatena.ne.jp/sirocco634/20071202#1196605129" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/sirocco634/20071202#1196605129', 'isbn10 –> isbn13');" target="_blank">isbn10 –> isbn13</a> <ol>
|
|||
|
<li>
|
|||
|
<a href="http://d.hatena.ne.jp/sirocco634/20071203#1196608244" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/sirocco634/20071203#1196608244', 'というわけで少し頑張ってみた');" target="_blank">というわけで少し頑張ってみた</a> <ol>
|
|||
|
<li>
|
|||
|
<a href="http://d.hatena.ne.jp/sirocco634/20071206#1196942024" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/sirocco634/20071206#1196942024', 'ちょっとミスしてた');" target="_blank">ちょっとミスしてた</a>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
</div>
|