prashanthiyer has asked for the wisdom of the Perl Monks concerning the following question:

I want to remove the spaces between the string not beginning or end of string. how can i do it? Here is the sample , I want to remove the space only between reset and ; and not between input and reset. input reset ; how can i do it?

Replies are listed 'Best First'.
Re: Removing the space in a string
by BrowserUk (Patriarch) on Oct 16, 2015 at 02:27 UTC

    Your post is full of inconsistencies.

    1. On the one hand you say "remove the spaces between the string not beginning or end of string"; which can be simply achieved thus:
      $s = ' input reset ; ';; $s =~ s[(?!^)(\s+)(?!$)][]g;; ## replace all spaces -- that are neith +er preceded by the start of string; nor followed by the end-of-string + -- with nothing. print "'$s'";; ' inputreset; '
    2. But then you give this: reset. input reset ; how as a example,

      but with no delimiters, there's no way to know what the actual example you have in mind contains.

    3. Additionally you say: "I want to remove the space only between reset and ; and not between input and reset"

      But the space between 'input' & 'reset' is neither at the beginning nor the end; but you say you don't want to remove it.

      Which completely contradicts your opening statement?

    So, you need to explain your requirements far more clearly; with clearly delimited examples of inputs and required outputs; otherwise we're just guessing.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
    In the absence of evidence, opinion is indistinguishable from prejudice.
Re: Removing the space in a string
by Anonymous Monk on Oct 16, 2015 at 02:38 UTC
Re: Removing the space in a string
by Anonymous Monk on Oct 16, 2015 at 01:40 UTC
    save the spaces from the beginning, save the spaces from the end, then remove spaces in the middle
      #!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd /; my $msg = NoMiddleSpaces( ' i t s a r a c e ' ); dd( $msg ); sub NoMiddleSpaces { my( $start, $middle, $end ) = $_[0] =~ m{^(\s*)(.*?)(\s*$)}is; $middle =~ s{\s+}{}g; return "$start$middle$end"; } __END__ " itsarace "