(toppers-users 3568) Re: ASPのmakedepでuse POSIXしている理由は?

Hiroaki TAKADA hiro @ ertl.jp
2011年 10月 12日 (水) 10:44:35 JST


邑中様、皆様

了解しました。この際なので、新しいライブラリに移行したいと思います。
具体的には、

「require "getopt.pl";」を「use Getopt::Std;」に
「Getopt」を「getopt」に

それぞれ変更します。

ちなみに、Getopt::Std の getopt は、

The getopt() function processes single-character switches with switch
clustering.  Pass one argument which is a string containing all switches
that take an argument.

となっておりまして、やはり、引数を取るスイッチだけを渡せば良い仕様
です。

また、configure にも同様の記述(POSIXモジュールも含めて)がありま
すので、同様に修正します。

ご指摘、ありがとうございました。

高田広章
名古屋大学

(11/10/12 10:32), Masaki Muranaka wrote:
> 高田先生,users MLのみなさま:
> 
> 原因判りました,当方のミスです.-d が期待通りに動作することを
> 確認しました.すみません.
> 用途不明ながら後方互換性のために残す,ということで承知いたしました.
> 
> 
> 2011年10月12日10:16 Hiroaki TAKADA<hiro @ ertl.jp>:
>> 邑中様
>>
>> 使用している getopt.pl の違いでしょうか。私の環境の getopt.pl は、
>> perl 5.12.3 に含まれているもので、
>>
>> ;# $RCSfile: getopt.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:23:58 $
>>
>> というタグがついているもので確かに古いです。
>>
>> このコメントには、
>>
>> ;# Process single-character switches with switch clustering.  Pass one
>> argument
>> ;# which is a string containing all switches that take an argument.
>>
>> とありまして、Getopt の引数は、パラメータを取るスイッチのリストです。
>> 引数に含まれないスイッチは、あれば 1 に定義されるという仕様です。
>>
>> 高田広章
>> 名古屋大学
>>
>> (11/10/12 9:43), Masaki Muranaka wrote:
>>> 高田先生,users MLのみなさま:
>>> おはようございます.
>>>
>>> POSIXモジュールの件は承知しました.
>>>
>>> -d の件,やはり府に落ちません.
>>> 最新と思われる asp-1.7.0.tar.gz の utils/makedep を参照しましたが,
>>> do Getopt("COTDR");
>>> という引数での呼び出しになっており, -d が有効に作用するとは思えません.
>>> また,-T -D ともに与えない状態で実行してみたところ,-d の有無にかかわらず
>>> elsif (!$opt_d) {
>>>           $target_dir = ""; ←ここ
>>> }
>>> に必ず突入しています.動作環境の違いでしょうか?
>>>
>>>
>>> 2011年10月12日1:47 Hiroaki TAKADA<hiro @ ertl.jp>:
>>>> 邑中様
>>>>
>>>> $^O 変数を使わずに POSIXモジュールを使っているのは、積極的な理由は
>>>> なかったと思います。ので、ご提案通りに修正したいと思います。
>>>>
>>>> -d オプションの方は、こちらでテストした限りは、動いています。-s
>>>> オプションは、-T オプションで置き換えたので削除しました。-d オプ
>>>> ションは、過去に何かの理由があって導入したものと思いますが、もう
>>>> 思い出せなくなっています。ですが、削除する理由がなかったので残っ
>>>> ています。
>>>>
>>>> 高田広章
>>>> 名古屋大学
>>>>
>>>> (11/10/11 10:18), Masaki Muranaka wrote:
>>>>> users-MLのみなさま:
>>>>> おはようございます.
>>>>>
>>>>> あともう一箇所腑に落ちないコードがありました.
>>>>> コマンドラインの -d オプションには,値の定義が無いので,Getopt 関数では解析できず,
>>>>> $opt_d は常に定義されないのではないように思います.
>>>>> 同様に動かない疑いのある -s オプションは ASP 版では削除になったようなのですが,
>>>>> -d を ASP 版で残している積極的な理由はありますか?
>>>>>
>>>>> 積極的な理由がなかったと仮定した場合の,さきほどの質問内容も含めた修正案の patch を添付します.
>>>>>
>>>>>
>>>>> 2011年10月11日8:01 Masaki Muranaka<monamour @ monaka.org>:
>>>>>> おはようございます.
>>>>>>
>>>>>> ASPのmakedepをざっと読んでみて,質問です.
>>>>>> ASPのmakedepで,/cygdrive 問題をクリアするために判別を試みているのは判りました.
>>>>>> その方法として POSIXモジュールをuseしていますが,POSIXモジュールは常に Perl に組み込まれているとは限らないのではと思います.
>>>>>> (また,モジュールが組み込まれていたとしても,すべての関数/変数/定数が使えるとも限りません)
>>>>>>
>>>>>> Perl では $^O 変数で動作環境の判別が可能と思うのですが,これを用いなかった積極的な理由はありますでしょうか.
>>>>>>
>>>>>> --
>>>>>> from もなか
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>
>>
>