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

strange regexp substitute problem #658

Closed
p5pRT opened this issue Sep 30, 1999 · 2 comments
Closed

strange regexp substitute problem #658

p5pRT opened this issue Sep 30, 1999 · 2 comments

Comments

@p5pRT
Copy link

p5pRT commented Sep 30, 1999

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

Searchable as RT1538$

@p5pRT
Copy link
Author

p5pRT commented Sep 30, 1999

From root@inter.nl.net

I found a very strange problem. The string ".-@​" in a regexp differs
from the string "-.@​". Here's a sample of problematic code​:

------
#!/usr/local/bin/perl -w
use strict;

my $a="Does this substitution work? !@​#$^&*() 123...---@​@​@​///";

$a=~s/[^.-@​]//g; # erratic
print "[$a]\n";

$a=~s/[^-.@​]//g; # ok
print "[$a]\n";
------

The output​:

------
[root@​cabernet]# perl /tmp/test
[?@​123...@​@​@​///]
[@​...@​@​@​]
------

I hope this is not some syntax problem I overlooked.

Perl Info


Site configuration information for perl 5.00503:

Configured by mauricem at Tue Apr  6 14:34:11 MET DST 1999.

Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
  Platform:
    osname=solaris, osvers=2.5.1, archname=sun4-solaris
    uname='sunos lent 5.5.1 generic_103640-18 sun4u sparc sunw,ultra-1 '
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef useperlio=undef d_sfio=undef
  Compiler:
    cc='gcc -B/usr/ccs/bin/', optimize='-O', gccversion=2.7.2.2
    cppflags='-I/usr/local/include'
    ccflags ='-I/usr/local/include'
    stdchar='unsigned char', d_stdstdio=define, usevfork=false
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    alignbytes=8, usemymalloc=n, prototype=define
  Linker and Libraries:
    ld='gcc -B/usr/ccs/bin/', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib
    libs=-lsocket -lnsl -ldb -ldl -lm -lc -lcrypt
    libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
    cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib'

Locally applied patches:
    


@INC for perl 5.00503:
    /usr/local/gnu/lib/perl5/5.00503/sun4-solaris
    /usr/local/gnu/lib/perl5/5.00503
    /usr/local/gnu/lib/perl5/site_perl/5.005/sun4-solaris
    /usr/local/gnu/lib/perl5/site_perl/5.005
    .


Environment for perl 5.00503:
    HOME=/
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/usr/local/bin:/usr/local/sbin:/usr/local/etc:/usr/local/X11/bin:/usr/local/gnu/bin:/vol/tex/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/bin:/usr/sbin:/usr/ucb
    PERL_BADLANG (unset)
    SHELL=/sbin/sh

@p5pRT
Copy link
Author

p5pRT commented Sep 30, 1999

From [Unknown Contact. See original ticket]

Altrade Super-User <root@​inter.nl.net> wrote

I found a very strange problem. The string ".-@​" in a regexp differs
from the string "-.@​".

As documented. From perlre​:

  Within a list,
  the "-" character is used to specify a range, so that a-z
  represents all characters between "a" and "z", inclusive.
  If you want "-" itself to be a member of a class, put it at
  the start or end of the list, or escape it with a backslash.

Mike Guy

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

No branches or pull requests

1 participant