Re: [ubuntu-uk] [OT] Quick Perl question...
Rather than removing the solar, /solar pair as separate actions it might be easier to use them to 'anchor' the start and end of text you want to extract. Try: $solar_info =~ s/solar([^]*)\/solar/$1\n/; This matches everything between the solar ... /solar pair, and replaces it with the text in between- it also sticks an extra newline on the end for where you have 'joined' lines - it should be easy to remove blank lines later. I'm a bit rusty: you might want to stick a 'g' on the very end (after the replacement expression) to make it match more than once on the same line. $solar_info =~ s/solar([^]*)\/solar/$1\n/g; Let us know how you get on. -- Matthew Bassett hewb...@gmail.com Sorry about the top posting- am replying from my phone. -Original Message- From: LeeGroups Sent: 12/07/2010 22:55:38 Subject: Re: [ubuntu-uk] [OT] Quick Perl question... $solar_info =~ s/\/solar.*/,/; From my tinkerings, this should find the string /solar in the string $solar_info, and then remove it and any number of following characters (the .*) and then replace them with a ,. Except that it doesn't. It hacks out the /solar and replaces it with a , but leaves the rest of the string intact... Much to my annoyance... :| What's the input string? The following code simply prints , for me not ,abcdef as you suggest it would: $test = /solarabcdef; $test =~ s/\/solar.*/,/; print $test; This input solar8,27.31,28.68,28.81,0.00,0.00,0/solar It need to be -- 8,27.31,28.68,28.81,0.00,0.00,0 Another line chops off the solar. The problem is that occasionally there is rubbish on the end of the line, or even another line appended to the end of the first... -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.ubuntu.com/UKTeam/ -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.ubuntu.com/UKTeam/
Re: [ubuntu-uk] [OT] Quick Perl question...
I'm pretty sure you need to avoid matching the start of the 2nd tag, otherwise text of the form: solarabcde/solarsolarfghij/solar Will be extracted as: abcde/solarsolarfghij E.g. Use a character class that avoids matching the start of a tag: $solar_info =~ s!solar([^]*)/solar!$1!g; -- Matthew Bassett hewb...@gmail.com Sorry about the top posting- am replying from my phone. -Original Message- From: Matt Wheeler Sent: 12/07/2010 23:46:32 Subject: Re: [ubuntu-uk] [OT] Quick Perl question... [some pruned text] You could remove both the start and end tags with something like $solar_info =~ s!solar(.*)/solar!$1!; (note I'm also using ! instead of / so I don't have to escape the /) -- Matt Wheeler m...@funkyhat.org -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.ubuntu.com/UKTeam/ -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.ubuntu.com/UKTeam/
Re: [ubuntu-uk] [OT] Quick Perl question
New line characters in the substitution string, perhaps? Dot doesn't match those unless you modify the line: $solar_info =~ s/\/solar.*/,/s; -- Kevin Safford -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.ubuntu.com/UKTeam/
Re: [ubuntu-uk] [OT] Quick Perl question...
On 12 July 2010 21:12, LeeGroups mailgro...@varga.co.uk wrote: $solar_info =~ s/\/solar.*/,/; From my tinkerings, this should find the string /solar in the string $solar_info, and then remove it and any number of following characters (the .*) and then replace them with a ,. Except that it doesn't. It hacks out the /solar and replaces it with a , but leaves the rest of the string intact... Much to my annoyance... :| Any clues? What's the input string? The following code simply prints , for me not ,abcdef as you suggest it would: $test = /solarabcdef; $test =~ s/\/solar.*/,/; print $test; Tom p.s. I don't know perl but I thought I'd have a play anyway -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.ubuntu.com/UKTeam/
Re: [ubuntu-uk] [OT] Quick Perl question...
$solar_info =~ s/\/solar.*/,/; From my tinkerings, this should find the string /solar in the string $solar_info, and then remove it and any number of following characters (the .*) and then replace them with a ,. Except that it doesn't. It hacks out the /solar and replaces it with a , but leaves the rest of the string intact... Much to my annoyance... :| What's the input string? The following code simply prints , for me not ,abcdef as you suggest it would: $test = /solarabcdef; $test =~ s/\/solar.*/,/; print $test; This input solar8,27.31,28.68,28.81,0.00,0.00,0/solar It need to be -- 8,27.31,28.68,28.81,0.00,0.00,0 Another line chops off the solar. The problem is that occasionally there is rubbish on the end of the line, or even another line appended to the end of the first... -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.ubuntu.com/UKTeam/
Re: [ubuntu-uk] [OT] Quick Perl question...
So, why not do /solar(.*)\/solar/ ? -- Jon TheNiceGuy Spriggs On 12 Jul 2010 22:56, LeeGroups mailgro...@varga.co.uk wrote: $solar_info =~ s/\/solar.*/,/; From my tinkerings, this should find the string /solar... What's the input string? The following code simply prints , for me not ,abcdef as you sugges... This input solar8,27.31,28.68,28.81,0.00,0.00,0/solar It need to be -- 8,27.31,28.68,28.81,0.00,0.00,0 Another line chops off the solar. The problem is that occasionally there is rubbish on the end of the line, or even another line appended to the end of the first... -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki... -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.ubuntu.com/UKTeam/
Re: [ubuntu-uk] [OT] Quick Perl question...
On 12 July 2010 22:55, LeeGroups mailgro...@varga.co.uk wrote: This input solar8,27.31,28.68,28.81,0.00,0.00,0/solar It need to be -- 8,27.31,28.68,28.81,0.00,0.00,0 Another line chops off the solar. The problem is that occasionally there is rubbish on the end of the line, or even another line appended to the end of the first... You could remove both the start and end tags with something like $solar_info =~ s!solar(.*)/solar!$1!; (note I'm also using ! instead of / so I don't have to escape the /) -- Matt Wheeler m...@funkyhat.org -- ubuntu-uk@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-uk https://wiki.ubuntu.com/UKTeam/