Wikipedia:Reference desk/Archives/Computing/2021 March 17

Computing desk
< March 16 << Feb | March | Apr >> March 18 >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is a transcluded archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


March 17 edit

Perl character extraction edit

Is there a neater way in perl of grabbing the "nth" character from a string and then removing it from the string?

The following "works", but it doesn't feel very perl-ish to me. Is there a better way? (All characters in strin are different.)

my $ch = substr( $strin, $n, 1 ) ;    # Grab character n
(my $strout = $strin) =~ s/$ch// ;    # Remove ch from strout

-- SGBailey (talk) 08:35, 17 March 2021 (UTC)[reply]

I'm no expert, but I would use the substr function, with the replacement parameter. I think it is easier to understand than regexp. I have an idea it is faster too (not that this makes any difference unless you are processing large numbers of strings). --TrogWoolley (talk) 13:01, 17 March 2021 (UTC)[reply]
Thank you - that works nicely
my $strin = "abcdef" ;
my $n = 3;
my $ch = substr( ($strout = $strin), $n, 1,  ) ;    # Grab character n
print "$strin    $strout    $ch\n" ;
=result
abcdef    abcef    d
Press any key to continue . . .
=cut

-- SGBailey (talk) 14:20, 17 March 2021 (UTC)[reply]

You can also use substr on the left side of an assignment statement to remove a character:
substr($str,$n,1) = "";
CodeTalker (talk) 18:05, 17 March 2021 (UTC)[reply]