>> >> >> >> Thanks guys. With some help I've come up with this:
>> >> >> >>
>> >> >> >> $string = 'abc def ghi jkl mno pqr stu vwx yz';
>> >> >> >> if(length($string) = 34) {$var1 = $string.":";}
>> >> >> >
>> >> >> > '=' is assignment, '==' is test for numerical equality.
>> >> >> Change the above
>> >> >> > line to:
>> >> >> > if( length($string) == 34 ) { $var1 = $string . ':' }
>> >> >> >
>> >> >> >> if(length($string) > 34) {
>> >> >> >> $string =~ s/\s//g;
>> >> >> >
>> >> >> > The above line deletes all of the spaces in $string. Is
>> >> >> that what you want
>> >> >> > to do?
>> >> >>
>> >> >> All fixed up except for this. How can I remove only the
>> >> spaces at the
>> >> >> end of $var1 and $var2 if they exist?
>> >> >>
>> >> >> - Grant
>> >> >>
>> >> >>
>> >> >> >> ($var1, $var2) = $string =~ /(.){35}(.){26}/;
>> >> >> >
>> >> > This pulls 35 characters and splits words, yet what
>> >> you asked for was the last word separated. Correct?
>> >>
>> >> I'm trying to pull 35 or fewer characters to the nearest space
>> >> basically. This is what I have now:
>> >>
>> >> if(length($string) <= 34) {$var1 = $string.":";}
>> >> if(length($string) > 34) {
>> >> ($var1, $var2) = ($string =~ /(.{35})(.{26})/);
>> >
>> 1234567891124567892123456789312345
>> > if you have in $string = q[1234 12345 12 5346 12367
>> 123 123678123];
>> > Then $var1 will be '1234 12345 12 5346 12367 123 12367',
>> but I thought you wanted '1234 12345 12 5346 12367 123'?
>> > Which one is the right one for what you are doing?
>>
>> You're right, I would want:
>>
>> 1234 12345 12 5346 12367 123
>>
>> Can you show me how to do that properly?
>>
> I sent a reply which had a whole different tack to how you are doing
> the processing. With Perl, there is always a number of ways to accomplish the
> task. If and when you get the original email, it was a little program to test
> out what you were entering.
Thank you for that. I'm just looking for something more concise so I
can try to follow what it's doing. Your script must be awesome but I
can't follow it. I'm only a fake perl guy so far.
- Grant
> Here is snippet of breaking that apart and re-joining
> #
> # if less than 35 characters, just add the colon
> #
> if ( length($string) < 35 ) {
> $var1 = $string . q[:];
> }
> else {
> @MyWorkw = split(/\s+/, $string);
> #
> # split the line by white space into an array
> #
> while ( 1 ) {
> if ( length($var1)+length($MyWorkw[0]) < 35 ) {
> $var1 .= shift(@MyWorkw) . q[ ];
> }
> else {
> $var1 =~ s/ $/:/;
> last
> }
> }
> while ( 1 ) {
> if ( length($var2)+length($MyWorkw[0]) < 26 ) {
> $var2 .= shift(@MyWorkw) . q[ ];
> }
> else {
> $var2 =~ s/ $/:/;
> last
> }
> }
>
> }
> If you have any questions and/or problems, please let me know.
> Thanks.
>
> Wags ;)
> David R. Wagner
> Senior Programmer Analyst
> FedEx Freight
> 1.719.484.2097 TEL
> 1.719.484.2419 FAX
> 1.408.623.5963 Cell
> http://fedex.com/us
>
>> - Grant
>>
>>
>> >> $var1 =~ s/\s+$//;
>> >> $var2 =~ s/\s+$//;
>> >> $var2 .= ":";
>> >> }
>> >>
>> >> Does that look OK? Is the 3rd line off?
>> >>
>> >> - Grant
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/