在我的一个脚本中,我使用了Getopt :: Long库.在程序开始时我打电话:
&GetOptions ('help', 'debug', 'user=s' => \$GetUser);
Run Code Online (Sandbox Code Playgroud)
前两个论点很简单:我通过分别检查$opt_help和发现它们的存在$opt_debug.然而第三个参数很棘手,因为我需要区分没有选项($ GetUser未定义,这对我来说没问题),单独使用"--user"($GetUser也是未定义的,但这次我要显示一个错误消息)和"--user FooBar"($GetUser接收'FooBar',我可以在进一步处理中使用).
如何在没有用户名的情况下区分不使用"--user"选项和单独使用它?
我注意到Spreadsheet :: XLSX模块的行为不一致,具体取决于它的安装方式.当在/ usr/bin/cpan上安装在OpenSUSE上时,它会从Excel 2007工作表中的单元格中读取日期:
$VAR1 = bless({
'Format' => 'yyyy-mm-dd',
'Val' => '2016-01-04',
'_Value' => '2016-01-04',
'Type' => 'Date'
}, 'Spreadsheet::ParseExcel::Cell' )
Run Code Online (Sandbox Code Playgroud)
这是正确的.但是,在从OpenSuSE存储库安装RPM的计算机上,读取同一工作表的同一单元格的相同代码返回:
$VAR1 = bless({
'Type' => 'Date',
'Format' => 'm-d-yy',
'Val' => '42373',
'_Value' => '1-4-16'
}, 'Spreadsheet::ParseExcel::Cell' );
Run Code Online (Sandbox Code Playgroud)
对我来说,看起来好像在我自己的机器上编译的代码包含不同的默认值,或者至少以不同于分发维护者编译的方式读取工作表.
它是原始作者编写依赖于编译时环境的代码,编译不可移植代码的分发维护者,还是决定将编译时环境相关代码作为RPM包含在存储库中的人的错误?
我不想责怪任何人,只是想知道,我应该在哪里提交错误报告.