g-cpan crashes under Perl 5.18. The problem is that Perl 5.18 changes the way the qw() quoting construct works, so you can no longer write code like "foreach $x qw(a b c)". You now have to use "foreach $x (qw(a b c))" instead Both g-cpan and the Gentoo::CPAN module need a few instances of this changed. Reproducible: Always Steps to Reproduce: 1. run g-cpan (with any arguments, or none. It doesn't matter.) Actual Results: "my" variable $arr masks earlier declaration in same scope at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 325. "my" variable $type masks earlier declaration in same statement at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 325. "my" variable $ar_type masks earlier declaration in same statement at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 326. "my" variable $module masks earlier declaration in same statement at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 327. "my" variable $module masks earlier declaration in same statement at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 328. "my" variable $module masks earlier declaration in same scope at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 330. "my" variable $module masks earlier declaration in same scope at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 331. "my" variable $module_name masks earlier declaration in same scope at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 332. "my" variable $module masks earlier declaration in same scope at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 333. "my" variable $ar_type masks earlier declaration in same statement at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 333. "my" variable $module masks earlier declaration in same statement at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 333. Variable "$abs_path" is not imported at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 345. (Did you mean &abs_path instead?) "my" variable $b_dir masks earlier declaration in same scope at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 379. Variable "$abs_path" is not imported at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 379. (Did you mean &abs_path instead?) Variable "$abs_path" is not imported at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 380. (Did you mean &abs_path instead?) "my" variable $makefile masks earlier declaration in same scope at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 382. "my" variable %p masks earlier declaration in same scope at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 383. "my" variable $fh masks earlier declaration in same scope at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 384. syntax error at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 324, near "$type qw(configure_requires requires build_requires recommends)" syntax error at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 337, near "}" Global symbol "$object" requires explicit package name at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 339. Global symbol "$abs_path" requires explicit package name at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 345. Global symbol "$module_name" requires explicit package name at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 365. Global symbol "$self" requires explicit package name at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 367. Global symbol "$module_name" requires explicit package name at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 367. syntax error at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 374, near "}" Global symbol "$object" requires explicit package name at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 375. Global symbol "$abs_path" requires explicit package name at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 379. Global symbol "$abs_path" requires explicit package name at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 380. syntax error at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm line 386, near "$type qw(requires configure_requires build_requires)" /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo/CPAN.pm has too many errors. Compilation failed in require at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo.pm line 13. BEGIN failed--compilation aborted at /usr/lib64/perl5/vendor_perl/5.18.2/Gentoo.pm line 13. Compilation failed in require. BEGIN failed--compilation aborted. Expected Results: It ought to work the same way it always did. Gentoo::CPAN needs two changes: the use of qw() needs to be changed to (qw()) on lines 324 and 386. g-cpan needs a similar change on line 716. I can make a proper diff to feed into patch if you really need it.
Please do, if you want you can also make a github pull request. https://github.com/gentoo-perl/g-cpan
Which g-cpan version is this?
Actually, this should already be fixed in ~arch g-cpan... (Technically this is a dupe of bug 424657) Arches please stabilize app-portage/g-cpan-0.16.5 Target: all stable arches
Stable on alpha.
arm stable
Stable for HPPA.
x86 stable
sparc stable
ppc/ppc64 stable
ia64 stable