Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.96k stars 556 forks source link

I18N::Langinfo docs of using $_ #10302

Closed p5pRT closed 14 years ago

p5pRT commented 14 years ago

Migrated from rt.perl.org#74322 (status was 'resolved')

Searchable as RT74322$

p5pRT commented 14 years ago

From user42@zip.com.au

Running the sample code in the I18N​::Langinfo pod\,

  use I18N​::Langinfo qw(langinfo ABDAY_1 YESSTR NOSTR);   my ($abday_1\, $yesstr\, $nostr) = map { langinfo } qw(ABDAY_1 YESSTR NOSTR);

gets an error

  Not enough arguments for I18N​::Langinfo​::langinfo at foo.pl line 2\, near "langinfo }"   Execution of foo.pl aborted due to compilation errors.

I suspect what it says about langinfo() using $_ if no arguments is not true.

Perl Info ``` Flags: category=library severity=low module=I18N::Langinfo Site configuration information for perl 5.10.1: Configured by Debian Project at Sun Feb 7 16:19:05 UTC 2010. Summary of my perl5 (revision 5 version 10 subversion 1) configuration: Platform: osname=linux, osvers=2.6.26-2-amd64, archname=i486-linux-gnu-thread-multi uname='linux biber 2.6.26-2-amd64 #1 smp tue jan 12 22:12:20 utc 2010 i686 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.1 -Dsitearch=/usr/local/lib/perl/5.10.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.1 -Dd_dosuid -des' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=undef, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include' ccversion='', gccversion='4.4.3 20100108 (prerelease)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='cc', ldflags =' -fstack-protector -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib /usr/lib64 libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.10.2.so, so=so, useshrplib=true, libperl=libperl.so.5.10.1 gnulibc_version='2.10.2' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector' Locally applied patches: DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts DEBPKG:debian/cpan_config_path - Set location of CPAN::Config to /etc/perl as /usr may not be writable. DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN. DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check. DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information. DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories. DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes. DEBPKG:debian/extutils_hacks - Various debian-specific ExtUtils changes DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets. DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor. DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy. DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable. DEBPKG:debian/m68k_thread_stress - http://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS. DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy DEBPKG:debian/perl_synopsis - http://bugs.debian.org/278323 Rearrange perl.pod DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need. DEBPKG:debian/use_gdbm - Explicitly link against -lgdbm_compat in ODBM_File/NDBM_File. DEBPKG:fixes/assorted_docs - http://bugs.debian.org/443733 [384f06a] Math::BigInt::CalcEmu documentation grammar fix DEBPKG:fixes/net_smtp_docs - http://bugs.debian.org/100195 [rt.cpan.org #36038] Document the Net::SMTP 'Port' option DEBPKG:fixes/processPL - http://bugs.debian.org/357264 [rt.cpan.org #17224] Always use PERLRUNINST when building perl modules. DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local DEBPKG:fixes/pod2man-index-backslash - http://bugs.debian.org/521256 Escape backslashes in .IX entries DEBPKG:debian/disable-zlib-bundling - Disable zlib bundling in Compress::Raw::Zlib DEBPKG:fixes/kfreebsd_cppsymbols - http://bugs.debian.org/533098 [3b910a0] Add gcc predefined macros to $Config{cppsymbols} on GNU/kFreeBSD. DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default. DEBPKG:debian/cpanplus_config_path - Save local versions of CPANPLUS::Config::System into /etc/perl. DEBPKG:fixes/kfreebsd-filecopy-pipes - http://bugs.debian.org/537555 [16f708c] Fix File::Copy::copy with pipes on GNU/kFreeBSD DEBPKG:fixes/anon-tmpfile-dir - http://bugs.debian.org/528544 [perl #66452] Honor TMPDIR when open()ing an anonymous temporary file DEBPKG:fixes/abstract-sockets - http://bugs.debian.org/329291 [89904c0] Add support for Abstract namespace sockets. DEBPKG:fixes/hurd_cppsymbols - http://bugs.debian.org/544307 [eeb92b7] Add gcc predefined macros to $Config{cppsymbols} on GNU/Hurd. DEBPKG:fixes/autodie-flock - http://bugs.debian.org/543731 Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc DEBPKG:fixes/archive-tar-instance-error - http://bugs.debian.org/539355 [rt.cpan.org #48879] Separate Archive::Tar instance error strings from each other DEBPKG:fixes/positive-gpos - http://bugs.debian.org/545234 [perl #69056] [c584a96] Fix \\G crash on first match DEBPKG:debian/devel-ppport-ia64-optim - http://bugs.debian.org/548943 Work around an ICE on ia64 DEBPKG:debian/dynaloader-config - http://bugs.debian.org/549170 Make DynaLoader work without Config_heavy.pl again DEBPKG:fixes/trie-logic-match - http://bugs.debian.org/552291 [perl #69973] [0abd0d7] Fix a DoS in Unicode processing [CVE-2009-3626] DEBPKG:fixes/hppa-thread-eagain - http://bugs.debian.org/554218 make the threads-shared test suite more robust, fixing failures on hppa DEBPKG:fixes/crash-on-undefined-destroy - http://bugs.debian.org/564074 [perl #71952] [1f15e67] Fix a NULL pointer dereference when looking for a DESTROY method DEBPKG:patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.10.1-11 in patchlevel.h ```
p5pRT commented 14 years ago

From @smpeters

On Mon Apr 12 17​:10​:55 2010\, kryde wrote​:

Running the sample code in the I18N​::Langinfo pod\,

use I18N​::Langinfo qw\(langinfo ABDAY\_1 YESSTR NOSTR\);
my \($abday\_1\, $yesstr\, $nostr\) = map \{ langinfo \} qw\(ABDAY\_1

YESSTR NOSTR);

gets an error

Not enough arguments for I18N​::Langinfo​::langinfo at foo\.pl line

2\, near "langinfo }" Execution of foo.pl aborted due to compilation errors.

I suspect what it says about langinfo() using $_ if no arguments is not true.

You are correct. It was not true. Starting with change ff7894f\, it is true and fixed. Thanks for the report!

Steve

p5pRT commented 14 years ago

The RT System itself - Status changed from 'new' to 'open'

p5pRT commented 14 years ago

@smpeters - Status changed from 'open' to 'resolved'

p5pRT commented 14 years ago

From @rgs

You can also add the prototype directly in xs. For some reason i thought this was already the case.

On Wednesday\, August 18\, 2010\, Steve Peters via RT \perlbug\-followup@​perl\.org wrote​:

On Mon Apr 12 17​:10​:55 2010\, kryde wrote​:

Running the sample code in the I18N​::Langinfo pod\,

    use I18N​::Langinfo qw(langinfo ABDAY_1 YESSTR NOSTR);     my ($abday_1\, $yesstr\, $nostr) = map { langinfo } qw(ABDAY_1    YESSTR NOSTR);

gets an error

    Not enough arguments for I18N​::Langinfo​::langinfo at foo.pl line    2\, near "langinfo }"     Execution of foo.pl aborted due to compilation errors.

I suspect what it says about langinfo() using $_ if no arguments is    not true.

You are correct.  It was not true.  Starting with change ff7894f\, it is true and fixed.  Thanks for the report!

Steve

-- "You don't mean odds and ends\, you mean des curieux et des bouts"\, corrected the manager. -- Terry Pratchett\, Hogfather

p5pRT commented 14 years ago

From @smpeters

Excellent idea! I hadn't done prototypes with XS before\, but why not? Changed with d16d4b1.

Steve Peters steve@​fisharerojo.org

On Thu\, Aug 19\, 2010 at 1​:52 AM\, Rafael Garcia-Suarez \< rgarciasuarez@​gmail.com> wrote​:

You can also add the prototype directly in xs. For some reason i thought this was already the case.

On Wednesday\, August 18\, 2010\, Steve Peters via RT \perlbug\-followup@&#8203;perl\.org wrote​:

On Mon Apr 12 17​:10​:55 2010\, kryde wrote​:

Running the sample code in the I18N​::Langinfo pod\,

use I18N&#8203;::Langinfo qw\(langinfo ABDAY\_1 YESSTR NOSTR\);
my \($abday\_1\, $yesstr\, $nostr\) = map \{ langinfo \} qw\(ABDAY\_1

YESSTR NOSTR);

gets an error

Not enough arguments for I18N&#8203;::Langinfo&#8203;::langinfo at foo\.pl line

2\, near "langinfo }" Execution of foo.pl aborted due to compilation errors.

I suspect what it says about langinfo() using $_ if no arguments is not true.

You are correct. It was not true. Starting with change ff7894f\, it is true and fixed. Thanks for the report!

Steve

-- "You don't mean odds and ends\, you mean des curieux et des bouts"\, corrected the manager. -- Terry Pratchett\, Hogfather

p5pRT commented 14 years ago

From user42@zip.com.au

"Steve Peters via RT" \perlbug\-followup@&#8203;perl\.org writes​:

Excellent idea! I hadn't done prototypes with XS before\,

That won't subtly change the way calls parse will it?

I'd be inclined to change the docs to match the code\, as langinfo() doesn't really seem like the sort of operation you'd often want to apply to $_.

p5pRT commented 14 years ago

From @smpeters

On Thu\, Aug 19\, 2010 at 5​:07 PM\, Kevin Ryde \user42@&#8203;zip\.com\.au wrote​:

"Steve Peters via RT" \perlbug\-followup@&#8203;perl\.org writes​:

Excellent idea! I hadn't done prototypes with XS before\,

That won't subtly change the way calls parse will it?

I'd be inclined to change the docs to match the code\, as langinfo() doesn't really seem like the sort of operation you'd often want to apply to $_.

Considering that for the previous nine years no one has brought this up as a problem\, I'm assuming this feature hasn't been tried much at all. That said\, the documentation specifically mentions this as a feature and the change to allow it was trivial. In this case\, I think fixing the documented feature is the best route.

Steve

p5pRT commented 14 years ago

From zefram@fysh.org

Kevin Ryde wrote​:

"Steve Peters via RT" \perlbug\-followup@&#8203;perl\.org writes​:

Excellent idea! I hadn't done prototypes with XS before\,

That won't subtly change the way calls parse will it?

It will. That's what prototypes are for.

-zefram

p5pRT commented 14 years ago

From ben@morrow.me.uk

Quoth zefram@​fysh.org (Zefram)​:

Kevin Ryde wrote​:

"Steve Peters via RT" \perlbug\-followup@&#8203;perl\.org writes​:

Excellent idea! I hadn't done prototypes with XS before\,

That won't subtly change the way calls parse will it?

It will. That's what prototypes are for.

But we're talking about changing a prototype of ($) (created implicitly by xsubpp\, since the XS function has one argument and I​::L has PROTOTYPES​: ENABLE) into a prototype of (_). The only case where that makes a difference is when it was called with no arguments\, which is the bug we want to fix.

Ben

p5pRT commented 14 years ago

From user42@zip.com.au

"Steve Peters via RT" \perlbug\-followup@&#8203;perl\.org writes​:

Considering that for the previous nine years no one has brought this up as a problem\,

Which might of course suggest everyone has been happy with the code as it stands! :-)

-- Restaurant jargon elucidated for the layman​: "Special" -- something almost gone bad that has to be sold today.