split and lc or \L in one statement

T

Thomas Glanzmann

Hello,
is it possible to write split and lc() or \L in one statement?

so makeing out of these three lines, one?

my ($snummer, $maschinenname, $prozess) = (split(/;_,?/))[0,1,14];
$snummer = lc($snummer);
$maschinenname = lc($maschinenname);

Thomas
 
J

Jürgen Exner

Thomas Glanzmann said:
Hello,
is it possible to write split and lc() or \L in one statement?

so makeing out of these three lines, one?

my ($snummer, $maschinenname, $prozess) = (split(/;_,?/))[0,1,14];
$snummer = lc($snummer);
$maschinenname = lc($maschinenname);

I'd expect a simple

my ($snummer, $maschinenname, $prozess) =
(split(/;_,?/, lc))[0,1,14];

should work just fine because your RE doesn't discriminate on upper or
lower case.

jue
 
P

Peter J. Holzer

Thomas Glanzmann said:
is it possible to write split and lc() or \L in one statement?

so makeing out of these three lines, one?

my ($snummer, $maschinenname, $prozess) = (split(/;_,?/))[0,1,14];
$snummer = lc($snummer);
$maschinenname = lc($maschinenname);

I'd expect a simple

my ($snummer, $maschinenname, $prozess) =
(split(/;_,?/, lc))[0,1,14];

That converts $prozess to lower case, which the original code doesn't.

I don't see a simple way to convert only $snummer, $maschinenname to
lowercase.

hp
 
J

Jürgen Exner

Peter J. Holzer said:
Thomas Glanzmann said:
is it possible to write split and lc() or \L in one statement?

so makeing out of these three lines, one?

my ($snummer, $maschinenname, $prozess) = (split(/;_,?/))[0,1,14];
$snummer = lc($snummer);
$maschinenname = lc($maschinenname);

I'd expect a simple

my ($snummer, $maschinenname, $prozess) =
(split(/;_,?/, lc))[0,1,14];

That converts $prozess to lower case, which the original code doesn't.
I don't see a simple way to convert only $snummer, $maschinenname to
lowercase.

You are right, my mistake. And because lc doesnt' accept a list as
argument I don't see any easy way, either. I guess you could try
something with map, but I seriously doubt it's worth the effort.

jue
 
M

Marc Girod

my ($snummer, $maschinenname, $prozess) = (split(/;_,?/))[0,1,14];
$snummer = lc($snummer);
$maschinenname = lc($maschinenname);

my ($snummer, $maschinenname, $prozess) =
grep{$_ = $c++<2 ? lc : $_}(split(/;_,?/))[0,1,14];

Marc
 
U

Uri Guttman

my ($snummer, $maschinenname, $prozess) = (split(/;_,?/))[0,1,14];
$snummer = lc($snummer);
$maschinenname = lc($maschinenname);

MG> my ($snummer, $maschinenname, $prozess) =
MG> grep{$_ = $c++<2 ? lc : $_}(split(/;_,?/))[0,1,14];

that should be map. grep won't return the value if it is false and maybe
the split results has a null string in there.

also $c is undeclared and could be set to something other than 0 by
other code. so this is longer and noisier than it has to be.

uri
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,215
Messages
2,571,113
Members
47,715
Latest member
ReeceTaren

Latest Threads

Top