List Info

Thread: Re: Please help with String Manipulation issue




Re: Please help with String Manipulation issue
country flaguser name
United States
1969-12-31 18:00:00
I have tried using the paragraph mode in the past with some
success, but this issue brought up a question I have had -
is it possible to define "$/" two different ways
in the same script?  In the past when I have tried to
redefine $/ to something other than the default I have had
to create separate scripts.  I noticed that you put the
following code in:


{

  local $/ = "";

  data = <>; # slurp all input in paragraph mode

}

is it possible to do something like:


{

  local $/ = "";

  data = <>; # slurp all input in paragraph mode

}

#do some code here

{

  local $/ = "nn";

  data = <>; # slurp all input in paragraph mode

}

#do something else here

When I have tried this in the past, the two separate $/ have
not worked nicely with one another and I have to use two
separate scripts because of it.  I am obviously missing
something.

Thanks,

Bob

----- Original Message ----
From: "merlynstonehenge.com" <merlynstonehenge.com>
To: Denham Eva <denhamevagmail.com>
Cc: perl-beginner@yahoogroups.com
Sent: Friday, February 16, 2007 2:07:45 PM
Subject: Re: [PBML] Please help with String Manipulation
issue









  


    
            >>>>> "Denham" ==
Denham Eva <denhamevagmail. com> writes:



Denham> ------------ -----Begin File Example-----
--------- ------



Denham> The Executive Director

Denham> The Farmer

Denham> PO Box 8051

Denham> Townname

Denham> 1000



Denham> The Director

Denham>        Kitty Veterinary Services

Denham>        Private Bag X2

Denham>        Waterfall

Denham>        2023



Denham> ------------ -------Example End---------
---------

Denham> The output I am trying to achive is.

Denham> ------------ -------Example Output------
--------

Denham> The Executive Director;The Farmer;PO Box
8051;Townname; 1000

Denham> The Director;Kitty Veterinary Services;Private
Bag X2;Waterfall; 2023



First, you can use "paragraph mode" to break up a
file that is separated

by blank lines. See the variable $/ in "perldoc
perlvar", and note that

it says:



Setting to "" will treat two or more consecutive
empty lines as a single

  empty line.



So, we can do that:



my data;

{

  local $/ = "";

  data = <>; # slurp all input in paragraph mode

}



The first element of data is now:



"The Executive DirectornThe FarmernPO Box
8051nTownname n1000"



We need to turn n into ; for every element of data,
which can be

done easily with:



foreach (data) {

    tr/n/;/;

  }



And now we need to sort them.  You didn't see *how* you
wanted to sort,

so the easiest is just to sort alphabetically on each of
these strings

(since the main name comes first):



data
= sort data;



Finally, we need to print that, and we have to add newlines
back

because we've gotten rid of them:



foreach (data) {

    print "$_n";

  }



That should be pretty close.



-- 

Randal L. Schwartz - Stonehenge Consulting Services, Inc. -
+1 503 777 0095

<merlynstonehenge. com> <URL:http://www.stonehen
ge.com/merlyn/>

Perl/Unix/security consulting, Technical writing, Comedy,
etc. etc.

See PerlTraining. Stonehenge. com for onsite and
open-enrollment Perl training!



    
  

    
    




<!--

#ygrp-mlmsg
{font-size:13px;font-family:arial,helvetica,clean,sans-serif
;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99%
arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family:Georgia;
}
#ygrp-text p{
margin:0 0 1em 0;
}
#ygrp-tpmsgs{
font-family:Arial;
clear:both;
}
#ygrp-vitnav{
padding-top:10px;
font-family:Verdana;
font-size:77%;
margin:0;
}
#ygrp-vitnav a{
padding:0 1px;
}
#ygrp-actbar{
clear:both;
margin:25px 0;
white-space:nowrap;
color:#666;
text-align:right;
}
#ygrp-actbar .left{
float:left;
white-space:nowrap;
}
.bld{font-weight:bold;}
#ygrp-grft{
font-family:Verdana;
font-size:77%;
padding:15px 0;
}
#ygrp-ft{
font-family:verdana;
font-size:77%;
border-top:1px solid #666;
padding:5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom:10px;
}

#ygrp-vital{
background-color:#e0ecee;
margin-bottom:20px;
padding:2px 0 8px 8px;
}
#ygrp-vital #vithd{
font-size:77%;
font-family:Verdana;
font-weight:bold;
color:#333;
text-transform:uppercase;
}
#ygrp-vital ul{
padding:0;
margin:2px 0;
}
#ygrp-vital ul li{
list-style-type:none;
clear:both;
border:1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight:bold;
color:#ff7900;
float:right;
width:2em;
text-align:right;
padding-right:.5em;
}
#ygrp-vital ul li .cat{
font-weight:bold;
}
#ygrp-vital a {
text-decoration:none;
}

#ygrp-vital a:hover{
text-decoration:underline;
}

#ygrp-sponsor #hd{
color:#999;
font-size:77%;
}
#ygrp-sponsor #ov{
padding:6px 13px;
background-color:#e0ecee;
margin-bottom:20px;
}
#ygrp-sponsor #ov ul{
padding:0 0 0 8px;
margin:0;
}
#ygrp-sponsor #ov li{
list-style-type:square;
padding:6px 0;
font-size:77%;
}
#ygrp-sponsor #ov li a{
text-decoration:none;
font-size:130%;
}
#ygrp-sponsor #nc {
background-color:#eee;
margin-bottom:20px;
padding:0 8px;
}
#ygrp-sponsor .ad{
padding:8px 0;
}
#ygrp-sponsor .ad #hd1{
font-family:Arial;
font-weight:bold;
color:#628c2a;
font-size:100%;
line-height:122%;
}
#ygrp-sponsor .ad a{
text-decoration:none;
}
#ygrp-sponsor .ad a:hover{
text-decoration:underline;
}
#ygrp-sponsor .ad p{
margin:0;
}
o {font-size:0;}
.MsoNormal {
margin:0 0 0 0;
}
#ygrp-text tt{
font-size:120%;
}
blockquote{margin:0 0 0 4px;}
.replbq {margin:4;}
-->







[Non-text portions of this message have been removed]



Unsubscribing info is here: h
ttp://help.yahoo.com/help/us/groups/groups-32.html 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://g
roups.yahoo.com/group/perl-beginner/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http
://groups.yahoo.com/group/perl-beginner/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:perl-beginner-digest@yahoogroups.com 
    mailto:perl-beginner-fullfeatured@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
    perl-beginner-unsubscribe@yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.c
om/info/terms/
 

Re: Please help with String Manipulation issue
country flaguser name
Czech Republic
2007-03-06 17:04:24
From: Bob Kardell <bobkardellyahoo.com>
> I have tried using the paragraph mode in the past with
some success,
> but this issue brought up a question I have had - is it
possible to
> define "$/" two different ways in the same
script?  In the past when I
> have tried to redefine $/ to something other than the
default I have
> had to create separate scripts.  I noticed that you put
the following
> code in:
> 
> 
> {
> 
>   local $/ = "";
> 
>   data = <>; # slurp all input in paragraph mode
> 
> }
> 
> is it possible to do something like:
> 
> 
> {
>   local $/ = "";
>   data = <>; # slurp all input in paragraph mode
> }
> 
> #do some code here
> 
> {
>   local $/ = "nn";
>   data = <>; # slurp all input in paragraph mode
> }
> 
> #do something else here
> 
> When I have tried this in the past, the two separate $/
have not
> worked nicely with one another and I have to use two
separate scripts
> because of it.  I am obviously missing something.

You must be, this should work correctly. The local() will
make sure 
the $/ gets reset to the default value at the end of the
block:

$a = "global value";
print "$an";
{
 local $a = "local";
 print "$an";
}
print "$an";
{
 local $a = "other local";
 print "$an";
}
print "$an";


Try it again and post the code if it doesn't work as
expected.

Jenda
===== JendaKrynicky.cz === http://Jenda.Krynicky.cz
=====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
	-- Terry Pratchett in Sourcery



------------------------ Yahoo! Groups Sponsor
--------------------~--> 
Great things are happening at Yahoo! Groups.  See the new
email design.
http://us.click.yahoo.com/lOt0.A/hOaOAA/yQLSAA/ndFolB/TM

------------------------------------------------------------
--------~-> 

Unsubscribing info is here: h
ttp://help.yahoo.com/help/us/groups/groups-32.html 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://g
roups.yahoo.com/group/perl-beginner/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http
://groups.yahoo.com/group/perl-beginner/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:perl-beginner-digest@yahoogroups.com 
    mailto:perl-beginner-fullfeatured@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
    perl-beginner-unsubscribe@yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.c
om/info/terms/
 

Re: Please help with String Manipulation issue
country flaguser name
United States
2007-03-06 19:58:21
--- In perl-beginner@yahoogroups.com, Bob Kardell
<bobkardell...> 
wrote:
>
> I have tried using the paragraph mode in the past with
some 
success, but this issue brought up a question I have had -
is it 
possible to define "$/" two different ways in the
same script?  In 
the past when I have tried to redefine $/ to something other
than 
the default I have had to create separate scripts.  I
noticed that 
you put the following code in:
> 
> 
> {
> 
>   local $/ = "";
> 
>   data = <>; # slurp all input in paragraph mode
> 
> }
> 
> is it possible to do something like:
> 
> 
> {
> 
>   local $/ = "";
> 
>   data = <>; # slurp all input in paragraph mode
> 
> }
> 
> #do some code here


see perldoc perlfunc for the function seek().


> 
> {
> 
>   local $/ = "nn";
> 
>   data = <>; # slurp all input in paragraph mode
> 
> }
> 
> #do something else here
> 
> When I have tried this in the past, the two separate $/
have not 
worked nicely with one another and I have to use two
separate 
scripts because of it.  I am obviously missing something.
> 
> Thanks,
> 
> Bob




------------------------ Yahoo! Groups Sponsor
--------------------~--> 
See what's inside the new Yahoo! Groups email.
http://us.click.yahoo.com/0It09A/bOaOAA/yQLSAA/ndFolB/TM

------------------------------------------------------------
--------~-> 

Unsubscribing info is here: h
ttp://help.yahoo.com/help/us/groups/groups-32.html 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://g
roups.yahoo.com/group/perl-beginner/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http
://groups.yahoo.com/group/perl-beginner/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:perl-beginner-digest@yahoogroups.com 
    mailto:perl-beginner-fullfeatured@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
    perl-beginner-unsubscribe@yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.c
om/info/terms/
 

[1-3]

about | contact  Other archives ( Real Estate discussion Medical topics )