![]() |
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| perl newbie . &&..programming newbie (question 2) | xytiz | Shell Programming and Scripting | 1 | 05-07-2009 01:26 PM |
| Questions of a newbie | Brycemb16 | Linux | 2 | 08-03-2005 03:13 PM |
| Newbie Questions | mharley | Shell Programming and Scripting | 2 | 03-01-2005 10:08 AM |
| A few newbie questions | hellz | UNIX for Dummies Questions & Answers | 7 | 09-01-2001 11:24 AM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Perl newbie questions!
Hi,
So I started to learn perl a few days ago, and I have some problems... One of my problems... PHP Code:
and tbh I don't understand it.. What I understand from it : href followed by none or more whitespaces followed by = followed by none or more whitespaces followed by 0 or 1 " and afterwards... I don';t get it at all! it's really frustrating. my second problem.. let's assume I have this array : @horse = ("mdamdamad" , "asdasda" ,"asdasd" ,"a"); I want to delete the element which is equal to "a". foreach $key (@horse){ if ($key == "a"){ delete $horse[$key];} } the above code doesn't seem to work.. it deletes the @horse[-2] value. I have also tryied using $key =~ /a/ and (grep $key eq "a",@horse). All have failed me.. any suggestions? please... Last edited by byte1918; 06-07-2009 at 01:55 PM.. |
|
||||
|
When you post perl code use the perl highlighter, not the php highlighter which can mangle some perl code. Your shortcut character class in the regexp are wrong, the shortcut classes like a space need a backslash \s: Code:
return @all = get($_[0]) =~ /href\s*=\s*"?([^\s>]+)/gis; I don't know if that will make your code do anything useful but it at least corrects the mistake in the regex. |
|
||||
|
Quote:
Anyway I know about escaping the metacharacters, and I did that, but dunno for what reason I copied it wrong, not sure. thx for pointing that out though :P One more question : Afaik in a sub $_[0],$_[1] refers to the first and second parameter which was sent to the function (correct me if im wrong please). So for example I have Code:
#!C:\Perl64\bin\perl.exe -w
print "Content-Type: Text-plain\n\n";
@horse = ("mdamdamad" , "asdasda" ,"asdasd" ,"a");
getindex ("asd",@horse);
sub getindex {
$string = $_[0];
@a = $_[1];
print $string."\n";
foreach $key (@a){
print $key."\n";
}
}
the problem is that @a in getindex only gets the first value of @horse , and not the entire array. How do I manage to pass to it the whole array? edit: i found out the answer I had to use @a= @_; Last edited by byte1918; 06-07-2009 at 04:48 PM.. |
|
||||
|
Code:
#!C:\Perl64\bin\perl.exe -w
print "Content-Type: Text/plain\n\n";#<-- this is not necessary unless running as a CGI script
@horse = ("mdamdamad" , "asdasda" ,"asdasd" ,"a");
getindex ("asd",@horse);
sub getindex {
($string,@a) = @_;
print $string."\n";
foreach $key (@a){
print $key."\n";
}
}
You're going to want to learn how to use references in perl really quickly insterad of trying to pass mixed data types like int he code above. An example: Code:
#!C:\Perl64\bin\perl.exe -w
print "Content-Type: Text/plain\n\n";
@horse = ("mdamdamad" , "asdasda" ,"asdasd" ,"a");
getindex ("asd",\@horse);
sub getindex {
my ($string,$array_ref) = @_;
print $string."\n";
foreach $key (@{$array_ref}){
print $key."\n";
}
}
The first three tutorials on this page discuss references: Tutorials - perldoc.perl.org Also: you will want to use "warnings" and "strict" pragmas and start declaring your variables properly when writing perl code. Code:
#!C:\Perl64\bin\perl.exe
use warnings;
use strict;
print "Content-Type: Text/plain\n\n";
my @horse = ("mdamdamad" , "asdasda" ,"asdasd" ,"a");
getindex ("asd",\@horse);
sub getindex {
my ($string, $array_ref) = @_;
print $string."\n";
foreach $key (@{$array_ref}){
print $key."\n";
}
}
Also, don't use $a and $b as private variables in your perl scripts. Perl uses them for sorting data. The http header was also wrong, you had: Text-plain should be: Text/plain |
|
||||
|
Quote:
|
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|