Help - Search - Member List - Calendar
Full Version: combinations
WorkTheWeb Forums > Webmaster Resources > Perl Beginner Help
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44
Support our Sponsors!
Sanobabu
Sincerely your,
sanobabu
[Email Removed]


--> www.MailNavigator.com - Find your email and news!

Kevin Bliss
-----Original Message-----
From: Larsen, Errin M HMMA/IT [mailto:[Email Removed]]
Sent: Friday, May 06, 2005 8:15 AM
To: [Email Removed]
Subject: gcc on Solaris

....

And I execute the following command line to test the gcc installation:

# gcc helloworld.c -o helloworld
ld.so.1: gcc: fatal: libiconv.so.2: open failed: No such file or
directory Killed



The error is telling you that it cannot find a required library
"libiconv.so.2". I found it in /usr/local/lib. Check to see if it is
there. If the file is there then check that your environment has the
path to libiconv.so.2 in the LD_LIBRARY_PATH variable. It should be
something like LD_LIBRARY_PATH=/usr/lib:/usr/local/lib. If the file
doesn't exist install the package you found on Sunfreeware (since the
one I found was in /usr/local/lib this did not come from a Sun included
package).


------------------------------------------------------------------------------

This email is confidential and may be legally privileged.

It is intended solely for the addressee. Access to this email by anyone else, unless expressly approved by the sender or an authorized addressee, is unauthorized.

If you are not the intended recipient, any disclosure, copying, distribution or any action omitted or taken in reliance on it, is prohibited and may be unlawful. If you believe that you have received this email in error, please contact the sender, delete this e-mail and destroy all copies.

==============================================================================

----- Original Message -----
From: <[Email Removed]>
To: <[Email Removed]>
Sent: Wednesday, May 11, 2005 2:23 PM
Subject: Re: rename files


QUOTE

----- Original Message -----
From: <[Email Removed]
To: <[Email Removed]
Sent: Wednesday, May 11, 2005 2:08 PM
Subject: rename files


Hi,

I want to rename all the files in a directory with filenames starting
1.jpg to n.jpg.
Why this code does not rename the files?


More on above,
All the files are already named as 28.jpg, 59.jpg, 12.jpg, 10.jpg etc. but
not in continuous order

After I run the script the, all the files are listed only if the (die "can
not rename file: $!n";) line is commented.
In the presense of the *die* line, the output is below: only 10.jpg shows
up in printed files list.
------
10.jpg
can not rename file: No such file or directory

Thanks.

Terminated with exit code 2.

opendir(DIR, "/tmp") or die "can not open dir: $!n";
my @files = grep {/.jpg/ } readdir(DIR);
closedir(DIR);

my $count = 1;

foreach (@files){
print "@filesn";  # works: prints all the files
my $new = $_;
$new =~ s/(.*)(.jpg)/$count$2/;

Thanks Teddy,
but after changing this >> $new =~ s/(.*)(.jpg)/$count$2/;
to $new =~ s/(d+)(.jpg)/$count$2/;
does not solve it either.??

QUOTE
rename($_, $new) or die "can not rename file: $!n";
print "$_ renamed to $newn";
$count++;
}





--
To unsubscribe, e-mail: [Email Removed]
For additional commands, e-mail: [Email Removed]
<http://learn.perl.org/> <http://learn.perl.org/first-response



----- Original Message -----
From: <[Email Removed]>
To: <[Email Removed]>
Sent: Wednesday, May 11, 2005 2:23 PM
Subject: Re: rename files


QUOTE

----- Original Message -----
From: <[Email Removed]
To: <[Email Removed]
Sent: Wednesday, May 11, 2005 2:08 PM
Subject: rename files


Hi,

I want to rename all the files in a directory with filenames starting
1.jpg to n.jpg.
Why this code does not rename the files?


More on above,
All the files are already named as 28.jpg, 59.jpg, 12.jpg, 10.jpg etc. but
not in continuous order

After I run the script the, all the files are listed only if the (die "can
not rename file: $!n";) line is commented.
In the presense of the *die* line, the output is below: only 10.jpg shows
up in printed files list.
------
10.jpg
can not rename file: No such file or directory

Thanks.

Terminated with exit code 2.

opendir(DIR, "/tmp") or die "can not open dir: $!n";
my @files = grep {/.jpg/ } readdir(DIR);
closedir(DIR);

my $count = 1;

foreach (@files){
print "@filesn";  # works: prints all the files
my $new = $_;
$new =~ s/(.*)(.jpg)/$count$2/;


sorry did not include the blackslash *.* for dot match.

but after changing this >> $new =~ s/(.*)(.jpg)/$count$2/;
to $new =~ s/(d+)(.jpg)/$count$2/;
does not solve it either.??

QUOTE
rename($_, $new) or die "can not rename file: $!n";
print "$_ renamed to $newn";
$count++;
}




Bright True
The following would rename any file in a directory (.anything) into numbers

in the same extention i hope it will be usfull

opendir(DIR,"$dir") or print "$!";
my @content = sort(readdir(DIR));
closedir(DIR);
my $no=0;
*foreach my* $number (@content){
$no++;
$number =~m/S+.(S+)/;
rename("$dir/$number","$dir/$no.$1");}

by the way , you forgot to mention the directory you want to rename file in

therefore you got this Error : can not rename file: No such file or
directory

rename("$dir/$file","$dir/$file");

bye

bye

----- Original Message -----
From: "bright true" <[Email Removed]>
To: <[Email Removed]>
Cc: <[Email Removed]>
Sent: Wednesday, May 11, 2005 2:55 PM
Subject: Re: rename files


QUOTE
The following would rename any file in a directory (.anything) into numbers

in the same extention i hope it will be usfull

opendir(DIR,"$dir") or print "$!";
my @content = sort(readdir(DIR));
closedir(DIR);
my $no=0;
*foreach my* $number (@content){
$no++;
$number =~m/S+.(S+)/;
rename("$dir/$number","$dir/$no.$1");}

by the way , you forgot to mention the directory you want to rename file in


Exactly, Right. Thanks, Bright.


QUOTE
therefore you got this Error : can not rename file: No such file or
directory

rename("$dir/$file","$dir/$file");

bye

bye


John W. Krahn
[Email Removed] wrote:
QUOTE
Hi,

Hello,

QUOTE
I want to rename all the files in a directory with filenames starting
1.jpg to n.jpg.
Why this code does not rename the files?

opendir(DIR, "/tmp") or die "can not open dir: $!n";
my @files = grep {/.jpg/ } readdir(DIR);
closedir(DIR);

my $count = 1;

foreach (@files){
print "@filesn";  # works: prints all the files
my $new = $_;
$new =~ s/(.*)(.jpg)/$count$2/;

rename($_, $new) or die "can not rename file: $!n";
print "$_ renamed to $newn";
$count++;
}

You want something like this:

my $dir = '/tmp';

opendir DIR, $dir or die "Cannot open $dir: $!";
my @files = map "$dir/$_", grep /.jpg$/, readdir DIR;
closedir DIR;

my $count = 1;

for my $file ( @files ) {
print "$filen";
my $new = "$dir/" . $count++ . '.jpg';
if ( -e $new ) {
print "$new already exists.n";
next;
}
rename $file, $new or warn "Cannot rename $file to $new: $!";
print "$file renamed to $newn";
}

__END__



John
--
use Perl;
program
fulfillment

Chris Devers
On Thu, 12 May 2005, Rajarshi Das wrote:

QUOTE
I am running a test which uses PVA_abbr_map and fails while checking
the property EastAsianWidth:A. Is it possible (the pl file says not
allowed) to manually modify PVA.pl (the order of properties in
PVA_abbr_map) and get perl -d to run according to the new order ?

Who knows?

What is PVA.pl?

Did you write it?

If not, where did it come from?

There's not nearly enough background information in your question to
form a reasonable response, asidde from "yes, it's probably possible."



--
Chris Devers

----- Original Message -----
From: "John W. Krahn" <[Email Removed]>
To: "Perl Beginners" <[Email Removed]>
Sent: Wednesday, May 11, 2005 5:02 PM
Subject: Re: rename files


QUOTE
[Email Removed] wrote:
Hi,

Hello,

I want to rename all the files in a directory with filenames starting
1.jpg to n.jpg.
Why this code does not rename the files?

opendir(DIR, "/tmp") or die "can not open dir: $!n";
my @files = grep {/.jpg/ } readdir(DIR);
closedir(DIR);

my $count = 1;

foreach (@files){
print "@filesn";  # works: prints all the files
my $new = $_;
$new =~ s/(.*)(.jpg)/$count$2/;

rename($_, $new) or die "can not rename file: $!n";
print "$_ renamed to $newn";
$count++;
}

You want something like this:

my $dir = '/tmp';

opendir DIR, $dir or die "Cannot open $dir: $!";
my @files = map "$dir/$_", grep /.jpg$/, readdir DIR;
closedir DIR;

my $count = 1;

for my $file ( @files ) {
print "$filen";
my $new = "$dir/" . $count++ . '.jpg';
if ( -e $new ) {
print "$new already exists.n";
next;
}
rename $file, $new or warn "Cannot rename $file to $new: $!";
print "$file renamed to $newn";
}

__END__


Jay, sort implemented. Thank you.
Very nice, John, (as expected from you.)
Thanks.

QUOTE


John
--
use Perl;
program
fulfillment

--
To unsubscribe, e-mail: [Email Removed]
For additional commands, e-mail: [Email Removed]
<http://learn.perl.org/> <http://learn.perl.org/first-response



Rajarshi Das
PVA.pl (PVA stands for Property Value Aliases) is a runtime file for unicode
which is generated by the
mktables utility using the file lib/unicore/PropValueAliases.txt.

One of the properties in PropValueAliases.txt is EastAsianWidth for which
'A' is a value which stands for 'Ambiguous'.

The file PVA.pl (which is also in lib/unicore) contains a PVA_abbr_map. This
contains a sequence of property aliases ('ea' for EastAsianWidth, 'jt' for
JoiningType and so on) and their corresponding values.

The test that I run uses a hash (%utf8::PVA_abbr_map) and reads each of
these property values in sequence (as it is listed under PVA_abbr_map in
PVA.pl ).

But perl -d <testname> iterates through a couple of property names (and
their values) but exits before the property 'ea' is picked up from
PVA_abbr_map.

I changed the order of propertynames in PVA_abbr_map (in PVA.pl), but perl
-d still continues to follow the original sequence of property names and
exits before 'ea' is used.

Please let me know if some other details are required.

Thanks,
Rajarshi.


QUOTE
From: Chris Devers <[Email Removed]
Reply-To: [Email Removed]
To: Rajarshi Das <[Email Removed]
CC: [Email Removed]
Subject: Re: modify PVA.pl (z/OS and perl-5.8.6)
Date: Thu, 12 May 2005 11:21:23 -0400 (EDT)

On Thu, 12 May 2005, Rajarshi Das wrote:

I am running a test which uses PVA_abbr_map and fails while checking
the property EastAsianWidth:A. Is it possible (the pl file says not
allowed) to manually modify PVA.pl (the order of properties in
PVA_abbr_map) and get perl -d to run according to the new order ?

Who knows?

What is PVA.pl?

Did you write it?

If not, where did it come from?

There's not nearly enough background information in your question to
form a reasonable response, asidde from "yes, it's probably possible."



--
Chris Devers

_________________________________________________________________
Kareena or Rani? Saif or SRK? http://server1.msn.co.in/sp05/iifa/ Rock your
vote now at IIFA.

Zentara
On Fri, 13 May 2005 09:02:46 +0200, [Email Removed] wrote:

QUOTE
Hi,

i'm looking for a way to activate the taint mode by defaut on my mashine,
with out doing the !#/usr/bin/perl -T  in each script!

Somebody has an idea?

How about in your .bashrc  (or whatever you have) set a PERL5OPT


export PERL5OPT=-T


To affect everyone, put it in /etc/profile (or something similar)
depending on your system.


--
I'm not really a human, but I play one on earth.
http://zentara.net/japh.html

Gayatri
Dear Friends,

I am facing one problem please let me know if anybody knows the solution.

The problem is as follows....

use IO::Select;
use IO::Socket;


The variable $sock will be handling my socket id for TCP, AF_INET/PF_INET
family and the code is as shown bellow..........
Listen ($sock, 5); #listens on this socket

$sel = new IO::Select( $sock );

while(@ready = $sel->can_read) {
foreach $fh (@ready) {
if($fh == $lsn) {
# Create a new socket
$new = $lsn->accept;
$sel->add($new);
}
else {
# Process socket

# Maybe we have finished with the socket
$sel->remove($fh);
$fh->close;
}
}
}

even if there is event(connection/read/write) to be accepted, select returns
empty set most of the times.. even though other(client) is initiating
connection.
If anyone has come across such problem please let me know the solution.


Thanks and Regards,
Gayatri


***************************NOTE*********************************************
**
Deccanet Designs Ltd is now Flextronics Design Ltd, India
****************************************************************************
**



*************************DISCLAIMER*****************************************
**
This e-mail and any attachment is for authorised use by the intended
recipient(s) only. It may contain proprietary material, confidential
information and/or be subject to legal privilege of Flextronics Design Ltd.
If you have received this message in error, please notify the originator
immediately. If you are not the intended recipient, you are notified that
you are strictly prohibited from retaining, using, copying, altering or
disclosing the contents of this message.
****************************************************************************
**



***************************NOTE***********************************************
Deccanet Designs Ltd is now Flextronics Design Ltd, India
******************************************************************************



*************************DISCLAIMER*******************************************
This e-mail and any attachment is for authorised use by the intended
recipient(s) only. It may contain proprietary material, confidential
information and/or be subject to legal privilege of Flextronics Design Ltd.
If you have received this message in error, please notify the originator
immediately. If you are not the intended recipient, you are notified that
you are strictly prohibited from retaining, using, copying, altering or
disclosing the contents of this message.
******************************************************************************

Zentara
On Mon, 16 May 2005 15:38:29 +0530, [Email Removed] (Gayatri)
wrote:


QUOTE
The problem is as follows....

use IO::Select;
use IO::Socket;


The variable  $sock  will be handling my socket id for TCP, AF_INET/PF_INET
family and the code is as shown bellow..........
Listen ($sock, 5); #listens on this socket

$sel = new IO::Select( $sock );

while(@ready = $sel->can_read) {
foreach $fh (@ready) {
if($fh == $lsn) {
# Create a new socket
$new = $lsn->accept;
$sel->add($new);
}
else {
# Process socket

# Maybe we have finished with the socket
$sel->remove($fh);
$fh->close;
}
}
}

even if there is event(connection/read/write) to be accepted, select returns
empty set most of the times.. even though other(client) is initiating
connection.
If anyone has come across such problem please let me know the solution.

It's really exasperating, when someone dosn't show a full working
snippet, then asks why their code dosn't work. Always show a working
minimal example. Anyways, here is a minimal example that works, but
dosn't have good error checking.

#!/usr/bin/perl
use strict;
use IO::Socket;
use IO::Select;

my $listen = IO::Socket::INET->new(
Proto => 'tcp',
LocalPort => 9192,
Listen => 5,
Reuse => 1) or die $!;

my $select = IO::Select->new($listen);

my @ready;
while(@ready = $select->can_read) {
my $socket;
for $socket (@ready) {

if($socket == $listen) {
my $new = $listen->accept;
$select->add($new);
print $new->fileno . ": connectedn";
} else {
my $line="";
$socket->recv($line,80);
if($line eq "") {
print $socket->fileno . ": disconnectedn";
$select->remove($socket);
$socket->close;
};
print "$linen";

my $socket;
for $socket ($select->handles) {
next if($socket==$listen);
$socket->send($line) or do {
print $socket->fileno . ": disconnectedn";
$select->remove($socket);
$socket->close;
};
}
}
}
}
__END__

--
I'm not really a human, but I play one on earth.
http://zentara.net/japh.html

Philip M. Gollucci
David Gilden wrote:

QUOTE
Hello,

In the following I was thinking it would just print out: "Hello"

#!/usr/bin/perl -w

$S = "Hello, Perl!";

($R) = grep {/w+/} $S;

print "$Rn";


I am trying for some sort of inline filtering so I can do the following:

#!/usr/bin/perl -w
use CGI qw/:standard/;
use strict;

my $page =  grep {/w{1,50}/i} param('page');
# only allow $page to contain 1-50 of [a-z0-9_]
....snip....

Is this even possible?


Dave Gilden
(kora musician / audiophile / webmaster @ www.coraconnection.com  / Ft. Worth, TX, USA)



Grep works on arrays.

perldoc -f grep

you just want a regex

($R) = grep {/w+/} $S;
=>

$s =~ /(Hello)/;
$r = $1;







--
END
------------------------------------------------------
Philip M. Gollucci ([Email Removed])
Consultant / http://p6m7g8.net/Resume/resume.shtml
Senior Developer / Liquidity Services, Inc.
http://www.liquidityservicesinc.com

John W. Krahn
David Gilden wrote:
QUOTE
Hello,

Hello,

QUOTE
In the following I was thinking it would just print out: "Hello"

#!/usr/bin/perl -w

$S = "Hello, Perl!";

($R) = grep {/w+/} $S;

grep() filters lists so if an element of the list on the right contains w+ it
will be passed through to the left but other elements will be filtered out.
Since you are dealing with scalars you want something like:

my ( $R ) = $S =~ /(w+)/;

Or:

my $R;
$R = $1 if $S =~ /(w+)/;

Or:

$S =~ /(w+)/ and my $R = $1;


QUOTE
print "$Rn";


I am trying for some sort of inline filtering so I can do the following:

#!/usr/bin/perl -w
use CGI qw/:standard/;
use strict;

my $page =  grep {/w{1,50}/i} param('page');
# only allow $page to contain 1-50 of [a-z0-9_]

my ( $page ) = param( 'page' ) =~ /(w{1,50})/;



John
--
use Perl;
program
fulfillment

John W. Krahn
[Email Removed] wrote:
QUOTE
Hi all

Hello,

QUOTE
I am trying to learn perl. I am using perl afs module to administer our
afs cell. my problem is, the  attached script is forking a new process
and is not releasing the memory as iam new to programming I am pretty
sure i am doing some simple mistake I would be really thankfull if one
of the expert can have a look at my script.


The only place in your code that forks is this line:

QUOTE
my @list = `/bin/cat /home/bobby/scripts/duplicate/test`;
foreach ( @list )


And you can code that without forking like this:

my $file = '/home/bobby/scripts/duplicate/test';
open FILE, $file or die "Cannot open $file: $!";
my @list = <FILE>;
foreach ( @list )


If your program is running out of memory then you should write that like this:

my $file = '/home/bobby/scripts/duplicate/test';
open FILE, $file or die "Cannot open $file: $!";

while ( <FILE> )


See:

perldoc -q "How can I make my Perl program take less memory"

Also note the section "Avoid unnecessary quotes and stringification".


If you want to learn more about perl's memory usage read the section
"Debugging Perl memory usage" in this document:

perldoc perldebguts



Also, one more comment (although I could make more :-).

QUOTE
my $afspath = "/afs/.ec.auckland.ac.nz/users/".(split //)[0]."/".(split //)[1]."/$entry";

You are using split() to do something that you could do more efficiently with
substr() or unpack():

my $afspath =
'/afs/.ec.auckland.ac.nz/users/'.substr($entry,0,1).'/'.substr($entry,1,1)."/$entry";



John
--
use Perl;
program
fulfillment

Alok Bhatt
Hi All,

I think I found the answer (checking at previous
posts), I think I am going to use
Spreadsheet::WriteExcel.

Thanks,
Alok

--- Alok Bhatt <[Email Removed]> wrote:
QUOTE
Hi All,

I am writing a script (needless to mention that it
is
in perl :)), that would read an excel file and save
a
copy of one of the sheet as another excel file and
do
processing on it. (Adding formats..etc). Can u
please
tell me which would be the best module to handle
this.
I have searched the CPAN and there were lots of
modules related to writing to excel file.
Please let me know to proceed...

Thanks in advance.
Alok


 
__________________________________
Yahoo! Mail Mobile
Take Yahoo! Mail with you! Check email on your
mobile phone.
http://mobile.yahoo.com/learn/mail

--
To unsubscribe, e-mail:
[Email Removed]
For additional commands, e-mail:
[Email Removed]
<http://learn.perl.org/
<http://learn.perl.org/first-response






__________________________________
Do you Yahoo!?
Make Yahoo! your home page
http://www.yahoo.com/r/hs

Ing. Branislav Gerzo
Ing. Branislav Gerzo [IBG], on Friday, May 20, 2005 at 09:24 (+0200)
thinks about:

IBG> I'd like to create over 10.000 *.lnk files. I didn't find any module
IBG> for this, could someone help me ? (it could be also commandline
IBG> utility ofcourse).
IBG> Also anyone knows, if it is possible to create *.lnk files relative to
IBG> original file? ("../../abc/orig.exe")

ok, I'd like to someone save some hours, so, here is my knowledge:

- you can create shortcut using perl with
http://search.cpan.org/src/JDB/libwin32-0....docs/index.html
- you cannot create shortcut with relative path to original like in
html ("../temp/orig.exe")

--

How do you protect mail on web? I use http://www.2pu.net

[BORE: One who, upon being asked how they are, tells you.]

Wijaya Edward
Hi,

Of course! This is the example of a script with recursive call that produces a list of the directory paths and filenames of all ".htm" and ".shtm" files contained within the subdirectory assigned to the $base variable.

__BEGIN__
#!/usr/local/bin/perl

$base = "/home/users/myspace/html/";
$delim = "/";

proc_files($base);
proc_dirs($base); # Prime the recursive call

print @out;

exit(0);

sub proc_files ($)
{
my $subdir = shift; # Called iteratively by proc_dirs
my @files;

opendir(DIR,$subdir);
@files = grep{-f $subdir.$_;/.html$/;} readdir(DIR); # HTML files
closedir(DIR);

push(@out,"$subdir$_n"); # stack result
}

sub proc_dirs ($)
{
my $path = shift; # Called by itself recursively
my @subdirs;

opendir(DIR,$path);
@subdirs = grep {-d $path.$_; !/^./} readdir(DIR); # subdirectories
closedir(DIR);

foreach (@subdirs) { # Process subdirectory files
push(@out,$path.$_.$delim."n");
proc_files($path.$_.$delim);
proc_dirs("$path$_$delim"); # RECURSIVE CALL
}
}

__END__

--
Regards,
Edward WIJAYA
SINGAPORE

John Doe
Am Montag, 23. Mai 2005 05.54 schrieb bingfeng zhao:
QUOTE
Hi, everyone,
I want know whether perl support recursive sub routine call?
[..]


Hi,

It does:

perl -le'
use warnings; use strict;
sub recursive {
my $cnt=shift;
print "recursion level $cnt";
recursive(++$cnt) if $cnt<10;
}
recursive(0);
'

recursion level 0
recursion level 1
recursion level 2
recursion level 3
recursion level 4
recursion level 5
recursion level 6
recursion level 7
recursion level 8
recursion level 9
recursion level 10


joe

Wijaya Edward
That's very clever John,
I'm wondering why ($cnt++) won't work instead of this
QUOTE
recursive(++$cnt) if $cnt<10;
I tested it, it gave endless recursion.


And what's the meaning of "0" here?
Why didn't you pass "1" as for recursive(1),
which is more sensible to me? Which also works.

QUOTE
recursive(0);

--
Regards,
Edward WIJAYA
SINGAPORE

John Doe
Am Montag, 23. Mai 2005 06.54 schrieb Wijaya Edward:
QUOTE
That's very clever John,
I'm wondering why ($cnt++) won't work instead of this

recursive(++$cnt) if $cnt<10;

I tested it, it gave endless recursion.

Yes, spontaneosly I used $cnt++ first, too :-)

++$cnt is called "pre increment" - in contrast to $cnt++ ("post increment") -
and means that $cnt is incremented _before_ the incremented value is used.

So,

recursive(++$cnt);

first increments $cnt and then passes it to recursive().

recursive($cnt++);

always passes the same value to recursive() and increments it afterwards (but
this incremented value is never used).

see (from cmd line)

perldoc perlop

QUOTE

And what's the meaning of "0" here?
Why didn't you pass "1"  as for recursive(1),
which is more sensible to me? Which also works.

recursive(0);
I tend to count levels from 0, not 1, that's all.



regards, joe

John Doe
Hi

Am Montag, 23. Mai 2005 06.58 schrieb bingfeng zhao:
QUOTE
oh, thanks a lot.

but if you declare prototype of a sub routine, like sub recursive($$), perl
report "main::XXXX() called too early to check prototype at sample.pl line
XX."
is it important

The warning says that the prototype can not be checked, and in so far it's
important (otherwise, you don't need to have a prototype).


QUOTE
and honw to avoid it?

By splitting into a prototype declaration and a sub definition:

perl -le'
use warnings; use strict;
sub recursive($); # declaration
sub recursive($) { # definition
my $cnt=shift;
print "recursion level $cnt";
recursive(++$cnt) if $cnt<10;
}
recursive 0; # () not needed due to prototyping
'

see

perldoc persub

title "Prototypes"

[...]
QUOTE
|perl -le'
|use warnings; use strict;
|sub recursive {
|my $cnt=shift;
|print "recursion level $cnt";
|recursive(++$cnt) if $cnt<10;
|}
|recursive(0);
|'
[...]


regards, joe

John Doe
Hi

Am Montag, 23. Mai 2005 07.24 schrieb bingfeng zhao:
QUOTE
I'm sorry I may misled by the question. the real qurstion I met is not
recursicve but another one involve recursive.

I don't understand what you mean here.

QUOTE
In the sub, I open a file and then call the same sub recursively. Of
cource, the recursive call will open another file also. when the flow
return from recursive call, the file handle opened before recursiave call
closed, so I cannot go on.

I think this behaviour is as expected and normal.
You can open and close the file outside of the sub.


If this does not help, please post a code example and indicate what goes
wrong.

QUOTE
Why perl DOES NOT keep the stack frame?

???

[...]

regards, joe

Xavier Noria
On May 23, 2005, at 7:24, bingfeng zhao wrote:

QUOTE
I'm sorry I may misled by the question. the real qurstion I met is not
recursicve but another one involve recursive.

In the sub, I open a file and then call the same sub recursively.
Of cource,
the recursive call will open another file also. when the flow
return from
recursive call, the file handle opened before recursiave call
closed, so I
cannot go on. Why perl DOES NOT keep the stack frame?

My guess is that your recursive sub follows this schema:

# schematic
sub foo() {
open FH, $filename;
foo() unless $stop_condition;
close FH;
}

If that's the case the problem is that filehandles are globals, so
each call to foo() uses the same FH.

There are two ways to fix this, the classic fix is to use local():

sub foo() {
local *FH;
open FH, $filename;
foo() unless $stop_condition;
close FH;
}

And the modern fix is to use a lexical instead of a filehandle:

sub foo() {
open my $fh, $filename;
foo() unless $stop_condition;
close $fh;
}

-- fxn

John Doe
Am Montag, 23. Mai 2005 08.57 schrieb Xavier Noria:
QUOTE
On May 23, 2005, at 7:24, bingfeng zhao wrote:
I'm sorry I may misled by the question. the real qurstion I met is not
recursicve but another one involve recursive.

In the sub, I open a file and then call the same sub recursively.
Of cource,
the recursive call will open another file also. when the flow
return from
recursive call, the file handle opened before recursiave call
closed, so I
cannot go on. Why perl DOES NOT keep the stack frame?

My guess is that your recursive sub follows this schema:

# schematic
sub foo() {
open FH, $filename;
foo() unless $stop_condition;
close FH;
}

If that's the case the problem is that filehandles are globals, so
each call to foo() uses the same FH.

There are two ways to fix this, the classic fix is to use local():

sub foo() {
local *FH;
open FH, $filename;
foo() unless $stop_condition;
close FH;
}

And the modern fix is to use a lexical instead of a filehandle:

sub foo() {
open my $fh, $filename;
foo() unless $stop_condition;
close $fh;
}

Hi

Is there a specific reason to repeatedly open and close the same file due to
recursive implementation of an algorithm?

regards, joe

Xavier Noria
On May 23, 2005, at 9:53, John Doe wrote:


QUOTE
My guess is that your recursive sub follows this schema:

# schematic
sub foo() {
open FH, $filename;
foo() unless $stop_condition;
close FH;
}

Is there a specific reason to repeatedly open and close the same
file due to
recursive implementation of an algorithm?


That's a schema, where the point is that FH is global (point that the
OP recognised in his code). The variable $filename is just there to
put something, the same as $stop_condition. In a real sub maybe
$filename will be a lexical that evals to a different filename per
call, or maybe not, from a formal point of view I don't care.

-- fxn

Offer Kaye
On 5/24/05, Guohong Hu wrote:
QUOTE

Hi, I am reading a text file (XML) and for each chunk of the file content, I
run a subroutine (sub1) to analyze it. A problem I met is after a certain
point of the input file (for example, after chunk #100), the sub1 suddenly
gets significantly slower.

It seems not a memory problem, because in sub1 I only do 1) read but not
modify some global hashes and arrays 2) read the file chunk content, and use
some private variables to analyze it, then print out the results. So sub1 is
not loading anything into the memory after exit.


You're asking a very general question. Without access to some code and
data that causes the problem, there is no way anyone can give you
specific suggestions. The problem could be in your code, the modules
you use, or simply the interaction of the code and specific data you
are reading (e.g. some feature of the data after chunk #100 that
causes the slowdown).

For one thing, you say "the sub1 suddenly gets significantly slower".
How do you know this?
Have you run Devel::DProf or some other benchmarking or profiling code?

Try to use Devel::ebug or the Perl debugger to help you pin-point the
problem. Write a test-case with minimal code and data that shows the
problem, and post that to this list. Then maybe someone can help :)

HTH,
--
Offer Kaye

Offer Kaye
Oops- replied to wrong list :) Please ignore...

--
Offer Kaye

Tielman Koekemoer \
Thanks for the help. So I cannot use an array or hash in angle
brackets as file handle. I have a variable amount of files which I'd
like opened and the contents shuffled. What would be the best way to
do this as my next idea also did not work?

_BEGIN_

@files=`ls /app2/koekemtn/scripts/dbstats/test`;
$num =1;

foreach $line ( @files ) {

chomp $line;
open ( $line , "$line") || die "Cannot open $files[0]n";
$file$num = $line; # Problem assignment!
}
_END_


TIA

Ing. Branislav Gerzo
Tielman Koekemoer (TNE) [TK], on Wednesday, May 25, 2005 at 10:32
(+0200) typed the following:

TK> $file$num = $line; # Problem assignment!

use hash instead scalar variables; $file{$num} is OK.
First you have to ofcourse declare it: my %file = ();

--

How do you protect mail on web? I use http://www.2pu.net

[Only a fool fights in a burning house--Kank the Klingon]

J aperlh
Hi, Guys,
I want to write a perl script to call several functions in a COM
component on MSWin32.
What is the best way to do this?
Thanks a lot.

Xavier Noria
On May 25, 2005, at 10:32, Tielman Koekemoer ((TNE)) wrote:


QUOTE
Thanks for the help. So I cannot use an array or hash in angle
brackets as file handle. I have a variable amount of files which I'd
like opened and the contents shuffled. What would be the best way to
do this as my next idea also did not work?

_BEGIN_

@files=`ls /app2/koekemtn/scripts/dbstats/test`;
$num =1;

foreach $line ( @files ) {

chomp $line;
open ( $line , "$line") || die "Cannot open $files[0]n";
$file$num = $line;  # Problem assignment!
}


If you need the filehandles in an array, then use an array and read
from them using readline(), which accepts any expression:

while (my $line = readline $files[$n]) {
// ...
}

See perldoc -f readline for details.

-- fxn

Thomas Btzler
Hi,

Tielman Koekemoer (TNE) <[Email Removed]> asked:
QUOTE
Thanks for the help. So I cannot use an array or hash in
angle brackets as file handle. I have a variable amount of
files which I'd like opened and the contents shuffled. What
would be the best way to do this as my next idea also did not work?

You'll have to use the OO interface to the I/O stuff.
Here's a small example:

#!/usr/bin/perl -w

use strict;
use IO::File;

my @infh;

foreach my $file ( @ARGV ){
if( my $fh = new IO::File $file ){
push @infh, $fh;
} else {
die "Failed to open input file '$file': $!";
}
}

while( @infh ){
foreach my $fh (@infh){
print $fh->getline();
if( $fh->eof() ){
$fh->close();
$fh = undef;
}
}
@infh = grep { defined $_ } @infh;
}

__END__

HTH,
Thomas

Jeff 'japhy' Pinyan
On May 25, Tielman Koekemoer (TNE) said:

QUOTE
Thanks for the help. So I cannot use an array or hash in angle
brackets as file handle. I have a variable amount of files which I'd
like opened and the contents shuffled. What would be the best way to
do this as my next idea also did not work?

@files=`ls /app2/koekemtn/scripts/dbstats/test`;

First of all, you need to chomp() this array, since all its elements end
in newlines. Second of all, you should not be using `ls ...` for this,
because Perl offers you opendir(), readdir(), and closedir(). Or, if
you're a little lazy, glob().

my $dbpath = '/app2/koekemtn/scripts/dbstats/test';
opendir my($dbdir), $dbpath or die "can't readdir $dbpath: $!";
my @dbfiles = readdir $dbdir;
closedir $dbdir;

Now you have all the file *names* in an array. Since they're in another
directory entirely, you'll have to put their path in front of them:

# use this line instead of the readdir() line above
my @dbfiles = map "$dbpath/$_", readdir $dbdir;

Finally, you probably only want files, not directories. Your `ls ...`
code didn't discriminate, but readdir() returns ALL entries, including '.'
and '..', so we do have to be specific:

# use this
my @dbfiles = grep -f, map "$dbpath/$_", readdir $dbdir;

(At this point, if you don't understand anything I've coded, I'd suggest
you look at 'perldoc -f opendir', 'perldoc -f readdir', 'perldoc -f
closedir', 'perldoc -f map', 'perldoc -f grep', and 'perldoc -f -X'. Or
you could ask more here, but it would help those of us that answer
questions a great deal if you read the docs first.)

QUOTE
$num =1;

foreach $line ( @files ) {
chomp $line;

Eh, you chomp() now. But I wouldn't have used `ls ...`.

QUOTE
open ( $line , "$line") || die "Cannot open $files[0]n";

You've got $files[0] there, but you're not always using $files[0], you're
using $line. You also didn't include $! in your error message, which
would tell you WHY it couldn't open the file.

QUOTE
$file$num = $line;  # Problem assignment!

Whenever you see that you have a group of variables called $this_1,
$this_2, $this_3, etc., it's a sign that you should be using an array. In
fact, you already HAVE the array (@files) since you're using the elements
of the array both as paths to files AND as the filehandles themselves.
It's a little unorthodox, but it's not a crime. I wouldn't do it, though,
I'd create filehandles:

my @fh;

for (@dbfiles) {
open my($f), "< $_" or die "can't read $_: $!";
push @fh, $f;
}

Now for every element in @dbfiles, the matching element in @fh is a
filehandle for it.

--
Jeff "japhy" Pinyan % How can we ever be the sold short or
RPI Acacia Brother #734 % the cheated, we who for every service
http://japhy.perlmonk.org/ % have long ago been overpaid?
http://www.perlmonks.org/ % -- Meister Eckhart

Paul Johnson
On Wed, May 25, 2005 at 10:27:11AM +0000, Vineet Pande wrote:

QUOTE
Hi:
I don't understand the way perl 'advances' the variables along the range
a-z, A-Z, and 0-9.
For example from a book

$a = "A9"; print ++$a, "n";

gives B0 as expected,

but,
$a = "Zz"; print ++$a, "n";

gives AAa.

Why?? why not Aa only!

Because you get a carry, similar to the way 99 + 1 = 100, not 00.

QUOTE
also $a = "9z"; print ++$a, "n";

gives 10.
and why not 0a?

Because "9z" doesn't match the criteria for magic auto-increment.

perldoc perlop says:

The auto-increment operator has a little extra builtin magic
to it. If you increment a variable that is numeric, or that
has ever been used in a numeric context, you get a normal
increment. If, however, the variable has been used in only
string contexts since it was set, and has a value that is
not the empty string and matches the pattern
"/^[a-zA-Z]*[0-9]*z/", the increment is done as a string,
preserving each character within its range, with carry:

print ++($foo = '99'); # prints '100'
print ++($foo = 'a0'); # prints 'a1'
print ++($foo = 'Az'); # prints 'Ba'
print ++($foo = 'zz'); # prints 'aaa'

--
Paul Johnson - [Email Removed]
http://www.pjcj.net

Thomas Btzler
Vineet Pande <[Email Removed]> asked:

QUOTE
I don't understand the way perl 'advances' the variables
along the range a-z, A-Z, and 0-9.

This is described in the perlop manpage:

[...]
The auto-increment operator has a little extra builtin magic to it. If you
increment a variable that is numeric, or that has ever been used in a
numeric context, you get a normal increment. If, however, the variable has
been used in only string contexts since it was set, and has a value that is
not the empty string and matches the pattern /^[a-zA-Z]*[0-9]*z/, the
increment is done as a string, preserving each character within its range,
with carry:

print ++($foo = '99'); # prints '100'
print ++($foo = 'a0'); # prints 'a1'
print ++($foo = 'Az'); # prints 'Ba'
print ++($foo = 'zz'); # prints 'aaa'
[...]

QUOTE
For example from a book

$a = "A9"; print ++$a, "n";

gives B0 as expected,

but,
$a = "Zz"; print ++$a, "n";

gives AAa.

Why?? why not Aa only!

Think about how this works. Perl first look at the 'z' and turns
it into an 'a'. It also knows that it has a carry-over digit, so
it next looks at the 'Z'. This is turned into an 'A', and there
is a carry-over again, so that becomes the leading 'A'.

QUOTE
also $a = "9z"; print ++$a, "n";

gives 10.
and why not 0a?

Because "9z" is a number with trailing garbage, which is silently
discarded during transformation to a number. The incrementing of
letters only works for strings that start with letters - see the
quoted text above.

HTH,
Thomas

Dave Gray
QUOTE
foreach my $file ( @ARGV ){
if( my $fh = new IO::File $file ){

# Be explicit[1]
if (my $fh = IO::File->new($file)) {

QUOTE
push @infh, $fh;
} else {
die "Failed to open input file '$file': $!";
}
}

[1] <http://www.perl.com/doc/manual/html/pod/perlobj.html#WARNING>

Jeff 'japhy' Pinyan
On May 26, bingfeng zhao said:

QUOTE
On RedHat Linux, the perl complain "Inappropriate ioctl for device" when I
use the following code to open a file:

my $file = "./abc";
if ( open FN, $file )
{
print "Cannot open the file: $!n";
next;
}

Um, you're printing that message if the file DOES open! You want 'unless'
instead of 'if', or else a 'not' operator in there:

if (not open FN, $file) { ... }

or

unless (open FN, $file) { ... }

The value in $! is unreliable if it hasn't actually been set (as is the
case in your code).

QUOTE
I modified code and test the FH as following, perl indicate "Bareword "FH"
not allowed while "strict subs"".
<CODE
open FH, $name;
if ( not defined FH )

You'd need to do *FH instead of FH, but that's really not the right way to
go about doing this. If you wanted to do it based on the filehandle, you
could do:

if (not defined fileno(FH)) { ... }

But why not just write:

open(FH, $file) or do {
warn("can't read $file: $!");
next;
};

That's nicer on the eyes, I think.

QUOTE
BTW, why a DOS-style perl file cannot run on linux and the bash report ":
bad interpreter: No such file or directory"? It will be OK if I save the
file as Unix-style and FTP to linux.

This is because if you transfer it incorrectly, the first line (the #!
line) is actually '#!/usr/bin/perlrn' instead of '#!/usr/bin/perln'
which means that Unix is looking for the program '/usr/bin/perlr', and
that file doesn't exist.

QUOTE
Another question is what is the simplest way to replace "rn" with "r" or
"n"?

I think you'd just want to remove the r's. This is how you remove r's
from a string in Perl:

$string =~ tr/r//d;

Or, on Unix, use the dos2unix utility -- you might already have it.

--
Jeff "japhy" Pinyan % How can we ever be the sold short or
RPI Acacia Brother #734 % the cheated, we who for every service
http://japhy.perlmonk.org/ % have long ago been overpaid?
http://www.perlmonks.org/ % -- Meister Eckhart

John Moon
Subject: search a file

Hello, I'm writing a simple perl program. no CGI.
* I need to make the program list all the files that have an extension of
".v" in the current directory. Do anyone know a function that makes that ?!
Best Regards,
Eliyah


One way ...

@a=glob('*.v');
print join("n",@a), "n";

Manav Mathur
See
perldoc -f glob
and the angle bracket operator in
perldoc perlop

@files = glob("*.v") ;
#or
@files = <*.v> ;

|-----Original Message-----
|From: Eliyah [mailto:[Email Removed]]
|Sent: Thursday, May 26, 2005 3:10 PM
|To: [Email Removed]
|Subject: search a file
|
|
|Hello, I'm writing a simple perl program. no CGI.
|* I need to make the program list all the files that have an
|extension of ".v" in the current directory. Do anyone know a
|function that makes that ?!
|Best Regards,
|Eliyah
|
|--
|To unsubscribe, e-mail: [Email Removed]
|For additional commands, e-mail: [Email Removed]
|<http://learn.perl.org/> <http://learn.perl.org/first-response>
|
|

*********************************************************
Disclaimer:

The contents of this E-mail (including the contents of the enclosure(s) or attachment(s) if any) are privileged and confidential material of MBT and should not be disclosed to, used by or copied in any manner by anyone other than the intended addressee(s). In case you are not the desired addressee, you should delete this message and/or re-direct it to the sender. The views expressed in this E-mail message (including the enclosure(s) or attachment(s) if any) are those of the individual sender, except where the sender expressly, and with authority, states them to be the views of MBT.

This e-mail message including attachment/(s), if any, is believed to be free of any virus. However, it is the responsibility of the recipient to ensure that it is virus free and MBT is not responsible for any loss or damage arising in any way from its use

*********************************************************

Jeff 'japhy' Pinyan
On May 27, bingfeng zhao said:

QUOTE
To parse a regular text file, I should report the line number of parsed file
when error occured. I want to know whether perl provide a shortcut way or
magic '$?' indicate this. I must counting myself if not.

When reading from a filehandle, the $. variable holds the current line
number.

--
Jeff "japhy" Pinyan % How can we ever be the sold short or
RPI Acacia Brother #734 % the cheated, we who for every service
http://japhy.perlmonk.org/ % have long ago been overpaid?
http://www.perlmonks.org/ % -- Meister Eckhart

Luhao
On Fri, May 27, 2005 at 10:31:40AM +0800, bingfeng zhao wrote:
QUOTE
To parse a regular text file, I should report the line number of parsed file
when error occured. I want to know whether perl provide a shortcut way or
magic '$?' indicate this. I must counting myself if not.

Thanks in advance


yes, $.

see perldoc perlvar


--
To see a world in a grain of sand
and a hevean in a wild flower
Hold infiniter in the palm of your hand
and eternity in an hour

Luke Bakken
QUOTE
$ cat marc21textfile | uniq > outputfile

Where's Randal for a UUOC award?

John Doe
Am Samstag, 28. Mai 2005 00.06 schrieb Bakken, Luke:
QUOTE
$ cat marc21textfile | uniq > outputfile

Where's Randal for a UUOC award?

Ok, for all using perl for everything and not beeing experienced with cmdline
tools as me:

$ uniq marc21textfile outputfile

"Useless Use Of Cat"

(I read the "INPUT" in the man page as "STDIN". Sorry all for that and the
superfluos traffic I produce(d) in this thread. The will to help doesn't
always provide real help.)

Retracting for a while,

joe

John Moon
Subject: DBD::Oracle problems

All,



I am getting the following error while trying to use DBD::Oracle:



DBD::Oracle::st execute failed: ORA-00900: invalid SQL statement (DBD
ERROR: OCIStmtExecute) [for Statement "describe ALL_USERS"] at
../oracleTest.pl line 69.



I have tested the connection manually with sqlplus, and all is good there.
I have also run some select statements with the DBD::Oracle driver that
DID work. So all is good there.



HOWEVER what is wrong with this describe statement and why do I get the
error above???



my $sth = $dbh->prepare(qq{describe ALL_USERS});

$sth->execute;





A WORKING snippet is:

my $sth = $dbh->prepare(qq{select count(USERNAME) from ALL_USERS});



and happens to return 635 as the result as expected.



So I believe that I understand how to use the driver but there is
obviously something about the describe that is different.



I don't think "describe" is an SQL command...

Try " select column_name from ALL_TAB_COLUMNS
where table_name = 'ALL_USERS'"

jwm

John Moon
Subject: RE: :Oracle problems

Subject: DBD::Oracle problems

All,



I am getting the following error while trying to use DBD::Oracle:



DBD::Oracle::st execute failed: ORA-00900: invalid SQL statement (DBD
ERROR: OCIStmtExecute) [for Statement "describe ALL_USERS"] at
../oracleTest.pl line 69.



I have tested the connection manually with sqlplus, and all is good there.
I have also run some select statements with the DBD::Oracle driver that
DID work. So all is good there.



HOWEVER what is wrong with this describe statement and why do I get the
error above???



my $sth = $dbh->prepare(qq{describe ALL_USERS});

$sth->execute;





A WORKING snippet is:

my $sth = $dbh->prepare(qq{select count(USERNAME) from ALL_USERS});



and happens to return 635 as the result as expected.



So I believe that I understand how to use the driver but there is
obviously something about the describe that is different.



I don't think "describe" is an SQL command...

Try " select column_name from ALL_TAB_COLUMNS
where table_name = 'ALL_USERS'"

jwm


Also see the DBI method "column_info"

jwm

Bob Showalter
[Email Removed] wrote:
QUOTE
All,

I am getting the following error while trying to use DBD::Oracle:

DBD::Oracle::st execute failed: ORA-00900: invalid SQL statement (DBD
ERROR: OCIStmtExecute) [for Statement "describe ALL_USERS"] at
./oracleTest.pl line 69.

DESCRIBE is a SQL*Plus command. It is not part of the Oracle SQL language.
You need to either query the data dictionary views directly, or use the
statement handle attributes like NAME, PRECISION, TYPE, etc. to get this
information.

Christopher L Hood
Ok that makes more sense, I will look online for a reference of oracle SQL
language, that is NOT sql*plus.

Do you know where I might start, besides google.com, of course I will do
that.

Chris

-----Original Message-----
From: Bob Showalter [mailto:[Email Removed]]
Sent: Tuesday, May 31, 2005 2:55 PM
To: Christopher L. Hood; [Email Removed]
Subject: RE: :Oracle problems

[Email Removed] wrote:
QUOTE
All,

I am getting the following error while trying to use DBD::Oracle:

DBD::Oracle::st execute failed: ORA-00900: invalid SQL statement (DBD
ERROR: OCIStmtExecute) [for Statement "describe ALL_USERS"] at
./oracleTest.pl line 69.

DESCRIBE is a SQL*Plus command. It is not part of the Oracle SQL language.
You need to either query the data dictionary views directly, or use the
statement handle attributes like NAME, PRECISION, TYPE, etc. to get this
information.

--
To unsubscribe, e-mail: [Email Removed]
For additional commands, e-mail: [Email Removed]
<http://learn.perl.org/> <http://learn.perl.org/first-response>

Michael Coll-Barth
oracle.com



-----Original Message-----
From: [Email Removed]
[mailto:[Email Removed]]
Sent: Tuesday, May 31, 2005 4:39 PM
To: [Email Removed]; [Email Removed]
Subject: RE: :Oracle problems


Ok that makes more sense, I will look online for a reference of oracle SQL
language, that is NOT sql*plus.

Do you know where I might start, besides google.com, of course I will do
that.

Chris

-----Original Message-----
From: Bob Showalter [mailto:[Email Removed]]
Sent: Tuesday, May 31, 2005 2:55 PM
To: Christopher L. Hood; [Email Removed]
Subject: RE: :Oracle problems

[Email Removed] wrote:
QUOTE
All,

I am getting the following error while trying to use DBD::Oracle:

DBD::Oracle::st execute failed: ORA-00900: invalid SQL statement (DBD
ERROR: OCIStmtExecute) [for Statement "describe ALL_USERS"] at
./oracleTest.pl line 69.

DESCRIBE is a SQL*Plus command. It is not part of the Oracle SQL language.
You need to either query the data dictionary views directly, or use the
statement handle attributes like NAME, PRECISION, TYPE, etc. to get this
information.

--
To unsubscribe, e-mail: [Email Removed]
For additional commands, e-mail: [Email Removed]
<http://learn.perl.org/> <http://learn.perl.org/first-response>





--
To unsubscribe, e-mail: [Email Removed]
For additional commands, e-mail: [Email Removed]
<http://learn.perl.org/> <http://learn.perl.org/first-response>
___________________________________________________________________
The information contained in this message and any attachment may be
proprietary, confidential, and privileged or subject to the work
product doctrine and thus protected from disclosure. If the reader
of this message is not the intended recipient, or an employee or
agent responsible for delivering this message to the intended
recipient, you are hereby notified that any dissemination,
distribution or copying of this communication is strictly prohibited.
If you have received this communication in error, please notify me
immediately by replying to this message and deleting it and all
copies and backups thereof. Thank you.


PHP Help | Linux Help | Web Hosting | Reseller Hosting | SSL Hosting
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2006 Invision Power Services, Inc.