Hi everyone, A quick question for you, here is the code: $tt=regsubst("test","^(.*)->(.*)",''\2'') Doesn''t return: undef or nil, it does return: "test" Niether does $tt=regsubst("test","^(.?)->(.*)",''\2'') or $tt=regsubst("test","^(.+?)->(.*)",''\2''). Is there a way to return undef if the string doesn''t include ''->something'' ? Regards, JM -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
On 2012-04-16 15:26, Antidot SAS wrote:> A quick question for you, here is the code: > $tt=regsubst("test","^(.*)->(.*)",''\2'') > > Doesn''t return: undef or nil, it does return: "test"As expected and intended.> Niether does $tt=regsubst("test","^(.?)->(.*)",''\2'') > or $tt=regsubst("test","^(.+?)->(.*)",''\2''). > > Is there a way to return undef if the string doesn''t include ''->something'' ?Perhaps something like this: $x = ''test'' $temp = regsubst($x, ''^(.*)->(.*)'', ''\2'') if $temp == $x { # No substitution done, must mean there is no "->" in $x $tt = undef } else { $tt = $temp } Or perhaps this: $tt = regsubst($x, ''^(.*)->(.*)|.*'', ''\2'') It will however give you the empty string (""), not undef, if there is no "->" in the string. /Bellman -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Thx for the reply it helps. But how come the \2 returns something that I never asked? On Mon, Apr 16, 2012 at 3:47 PM, Thomas Bellman <bellman@nsc.liu.se> wrote:> On 2012-04-16 15:26, Antidot SAS wrote: > > > A quick question for you, here is the code: > > $tt=regsubst("test","^(.*)->(.*)",''\2'') > > > > Doesn''t return: undef or nil, it does return: "test" > > As expected and intended. > > > Niether does $tt=regsubst("test","^(.?)->(.*)",''\2'') > > or $tt=regsubst("test","^(.+?)->(.*)",''\2''). > > > > Is there a way to return undef if the string doesn''t include > ''->something'' ? > > Perhaps something like this: > > $x = ''test'' > $temp = regsubst($x, ''^(.*)->(.*)'', ''\2'') > if $temp == $x { > # No substitution done, must mean there is no "->" in $x > $tt = undef > } else { > $tt = $temp > } > > Or perhaps this: > > $tt = regsubst($x, ''^(.*)->(.*)|.*'', ''\2'') > > It will however give you the empty string (""), not undef, if there is > no "->" in the string. > > > /Bellman > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. > >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
On 2012-04-16 15:57, Antidot SAS top-posted:> Thx for the reply it helps. > > But how come the \2 returns something that I never asked?It doesn''t. But since there are no occurrances of ''^(.*)->(.*)'', then there are none that get replaced. Similarly, if you do: regsubst(''foobar'', ''x'', ''y'') you will get ''foobar'', since there *is* no ''x'' in ''foobar'' that can be replaced by a ''y''. /Bellman -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Ok, I totally forget that replacement part is not a search :D On Mon, Apr 16, 2012 at 5:00 PM, Thomas Bellman <bellman@nsc.liu.se> wrote:> On 2012-04-16 15:57, Antidot SAS top-posted: > > > Thx for the reply it helps. > > > > But how come the \2 returns something that I never asked? > > It doesn''t. But since there are no occurrances of ''^(.*)->(.*)'', > then there are none that get replaced. Similarly, if you do: > > regsubst(''foobar'', ''x'', ''y'') > > you will get ''foobar'', since there *is* no ''x'' in ''foobar'' that > can be replaced by a ''y''. > > > /Bellman > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. > >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.