Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

m//, s/// on the smart-match exception list #11352

Open
p5pRT opened this issue May 16, 2011 · 1 comment
Open

m//, s/// on the smart-match exception list #11352

p5pRT opened this issue May 16, 2011 · 1 comment

Comments

@p5pRT
Copy link

p5pRT commented May 16, 2011

Migrated from rt.perl.org#90680 (status was 'new')

Searchable as RT90680$

@p5pRT
Copy link
Author

p5pRT commented May 16, 2011

From @ikegami

Created by @ikegami

  use 5.010;
  my @​words = qw(a great green dragon);
  say @​words ~~ /dragon/ ? "MATCH" : "FAIL";
  given (@​words) {
  say "dragon" when /dragon/;
  default { say "odd critter​: @​$_"; }
  }

outputs

  MATCH
  odd critter​: a great green dragon

While that behaves as documented, the documented behaviour doesn't make much
sense. C<< when (//) >> shouldn't be on the smart-match exception list.

  @​words=$x="foo"; Current Proposed
  ----------------- ----------------
  given($x) when (/foo/) $_ =~ /foo/ True $_ ~~ /foo/ True
  given(@​words) when (/foo/) $_ =~ /foo/ False $_ ~~ /foo/ True
  given($x) when ($_ =~ /foo/) $_ =~ /foo/ True $_ =~ /foo/ True
  given($x) when ($x =~ /foo/) $x =~ /foo/ True $x =~ /foo/ True

Furthermore, C<< when (s///) >> should be on the smart-match exception list.
One currently has to use C<< when (!! s///) >> to do anything useful.

  Current
Proposed
  ------------------------------
---------------------
  given ("food") when (s/foo/bar/) $_ ~~ s/foo/bar/ False
$_ =~ s/foo/bar/ True
  given ("food") when ($_ =~ s/foo/bar/) $_ ~~ ($_ =~ s/foo/bar/) False
$_ =~ s/foo/bar/ True

- Eric

Perl Info

Flags:
    category=core
    severity=low

Site configuration information for perl 5.12.3:

Configured by gecko at Wed Feb  9 14:35:46 2011.

Summary of my perl5 (revision 5 version 12 subversion 3) configuration:

  Platform:
    osname=MSWin32, osvers=5.2, archname=MSWin32-x86-multi-thread
    uname=''
    config_args='undef'
    hint=recommended, useposix=true, d_sigaction=undef
    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='cl', ccflags ='-nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32
-D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D_USE_32BIT_TIME_T
-DPERL_MSVCRT_READFIX',
    optimize='-MD -Zi -DNDEBUG -O1',
    cppflags='-DWIN32'
    ccversion='12.00.8168', gccversion='', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64',
lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf
-libpath:"C:\Progs\perl5123-ap1204\lib\CORE"  -machine:x86'
    libpth=\lib
    libs=  oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib  netapi32.lib
uuid.lib ws2_32.lib mpr.lib winmm.lib  version.lib odbc32.lib odbccp32.lib
comctl32.lib msvcrt.lib
    perllibs=  oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib  netapi32.lib
uuid.lib ws2_32.lib mpr.lib winmm.lib  version.lib odbc32.lib odbccp32.lib
comctl32.lib msvcrt.lib
    libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl512.lib
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug
-opt:ref,icf  -libpath:"C:\Progs\perl5123-ap1204\lib\CORE"  -machine:x86'

Locally applied patches:
    ACTIVEPERL_LOCAL_PATCHES_ENTRY
    c6fbf28 [perl #71806] perldb does not setup %dbline with the shebang
option -d
    1fd8fa4 Add Wolfram Humann to AUTHORS
    f120055 make string-append on win32 100 times faster
    a2a8d15 Define _USE_32BIT_TIME_T for VC6 and VC7
    007cfe1 Don't pretend to support really old VC++ compilers
    6d8f7c9 Get rid of obsolete PerlCRT.dll support
    d956618 Make Term::ReadLine::findConsole fall back to STDIN if /dev/tty
can't be opened
    321e50c Escape patch strings before embedding them in patchlevel.h


@INC for perl 5.12.3:
    C:/Progs/perl5123-ap1204/site/lib
    C:/Progs/perl5123-ap1204/lib
    .


Environment for perl 5.12.3:
    HOME (unset)
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=...
    PERL_BADLANG (unset)
    SHELL (unset)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants