שאלות על פרל

nadavb13

New member
שאלות על פרל

מה הבעיה של הקוד הזה קוד: #!/usr/bin/perl -w use strict; close(names); open (names, "c:\b.txt"); my $fileinput = <names>; print $fileinput; יש כזה קובץ c:\b.txt וכתוב בו משהו ועוד שאלה על פרל אך אני יכול לעריץ פקודות דוס דרך פרל כאילו פקודות דוס בתוך תוכנית פרל נגיד שפרל ידפיס את התוצא של netstat -n יש כזה דבר ועוד בעיה בקוד הזה #!/usr/bin/perl -w open(FH, "> c:\b.txt"); print FH "The time is: " , scalar(localtime()), "\n"; close(FH); זה קוד שאמור להוסיף משהו לקובץ טקסט
 

eyalbd

New member
שתי תשובות על פרל

או ליתר דיוק שני תיקונים. א. השתמש עבור קבצים בforward slash או בשני backslash למשל c:/b.txt או c:\\b.txt אבל לא c:\b.txt ב. אם אתה רוצה לקרוא את כל הקובץ ב"בליעה" אחת אל תקרא אותו לסקלר אלא לlist. אפשר לקרוא לסקלר אבל תצטרך לתורך כך לשנות את ה-default record separator. ג. אם אתה רוצה לפתוח קובץ להדבקה עליך להשתמש ב << ולא ב '<' אחד הנה תיקון לקוד שלך (לא בדקתי)
#!/usr/bin/perl -w use strict; # Read to a list # open (NAMES, "c:/b.txt") or die "Could not open file: $!\n"; my @lines = <NAMES>; close NAMES; print "@lines"; # Read to a Scalar # open (NAMES, "c:/b.txt") or die "Could not open file: $!\n"; undef $/; my $file_text = <NAMES>; close NAMES; print $file_text; # Append to a file # open NAMES, ">>c:/b.txt" or die "Could not open file: $!\n"; print NAMES "The time is: " , scalar(localtime()), "\n"; close NAMES;​
 

nadavb13

New member
תודה רבה

תודה רבה עזרתה לי מאוד אבל אולי מישהו יודע את התשובות לשאר השאלות שלי? ושוב תודה רבה
 

nadavb13

New member
אז כך

לא עניתה לי על השאלה הזאות ועוד שאלה על פרל אך אני יכול לעריץ פקודות דוס דרך פרל כאילו פקודות דוס בתוך תוכנית פרל נגיד שפרל ידפיס את התוצא של netstat -n יש כזה דבר אבל כבר יסתדרתי ותודה בכול מקרה
 

eyalbd

New member
הרצת פקודות מתוך פרל

יש אינסוף אפשרויות. אתן לך כמה דוגמאות נניח על הפקודה שציינת
# Method 1 - using system # system "netstat -n"; my $exit_code = ($? >> 8); #------------------------------------------ # Method 2 - backticks ` # my $output = `netstat -n`; my $exit_code = ($? >> 8); # Now $output contains the output of netstat # print $output, "\n"; #------------------------------------------------------- # Method 3 - using Open with | # open NETSTAT, "netstat -n |" or die "can't run netstat"; while (my $line = <NETSTAT>) { # Do something with each line # print $line; } close NETSTAT; #---------------------------------------------------------​
אני חושב שזה מספיק בינתיים. יש כמובן את exec ובחלונות אפשר גם להשתמש ב Win32::process אבל לדעתי מה שנתתי נותן מענה כמעט לכל הצרכים.
 

nadavb13

New member
תודה

תודה למרות שכבר יצלחתי לפני שאמרתה לי וגם אמרתי לך שיצלחתי כבר תסתקל בהודעה למעלה אבל לא משנה תודה בכל זאות
 
למעלה