if x==0: # error name 'x' is not defined
print("hello") # เขียนแบบนี้ไม่ได้ ต้องมีย่อหน้า print "world" # เขียนแบบนี้ไม่ได้ ต้องมีวงเล็บ print("ไทย") # error ไม่รองรับภาษาไทยแบบ ANSI
ในทางตรงกันข้าม
ถ้าต้องการตรวจสอบว่าตัวแปรไม่มีค่า จะใช้ if (!$var) หรือ if (not $var) หรือใช้ unless ($var) แทนจะอ่านง่ายกว่า $var = 'sorry' unless $var;
# เขียนให้สั้นลงได้เป็น
$var ||= 'sorry';
เงื่อนไขบางตัว อาจมีหลายคำสั่ง จะใช้ do {...} ช่วย ซึ่งมีประโยชน์มาก
เวลาอยู่ในกรอบของ if เพราะถ้ามี if ซ้อน if จะอ่านยาก หรือ
ถ้าไม่อยากมีวงเล็บ จะไม่ใช้ do แต่ใช้ and แทนก็ได้ $var eq 'hello' ? print 'yes' : do { print 'no'; print ' sorry'} ;
# หรือใช้ and แทน
$var eq 'hello' ? print 'yes' : print 'no' and print ' sorry' ;
หลายเงื่อนไขอยู่ร่วมกัน ใช้ && แทน"และ" ใช้ || แทน"หรือ" if (..&& ..&&..) ...
while (..|| ..||..) ...
while จะใช้งานอยู่ก้ำกึ่งระหว่าง if กับ for ใช้ทำ loop ที่มีเงื่อนไขซับซ้อน
คำสั่ง last ใช้กับ while, if และ for เพื่อหยุดแล้วออกจาก loop while (<>) {
last if $_ eq "\n";
print $_;
}
# เขียนให้อ่านง่ายขึ้นด้วยการตัดวงเล็บปีกกา {} ภายในออก
while (<>) {
# ทำบางอย่างตรงนี้จนจบทั้งฉบับ
$end_header=1 if /^\s*$/;
next if $end_header;
$header.=$_;
# ทำบางอย่างเกี่ยวกับ header
}
for สามารถใช้ทำ loop แทน while ได้โดยไม่ต้องใช้ last มาหยุด for ($i=0;$i<3;$i++) { print $i}
และสามารถเขียนให้สั้นลงได้เป็น print $_ for 0,1,2;
for ปกติจะนิยมใช้กับ array หรือจะใช้ foreach แทน for ก็ได้ แต่ใช้ for จะสั้นกว่า @arr=('thai', 'us');
print $_ for @arr;
# หรือเขียนใหม่ทั้งหมดเป็น
print $_ for 'thai', 'us';
รายละเอียดเพิ่มเติมของ if และ loop อ่านได้ในคู่มือ perl หัวข้อ perlsyn
ปัญหาของ O_CREAT จะเกิดขึ้น เมื่อเขียน db จากเวปไซต์
แล้วไม่มีสิทธิ์เขียนไฟล์ลงบนพื้นที่ กรณีนี้ให้สร้างโฟลเดอร์ย่อยขึ้นมา
แล้ว chmod a+w เพื่อให้ web server เขียนลงโฟลเดอร์นั้นได้