الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[تنبيه : عنوان غير مناسب]مشكله بيسطه .. لمحترفين وصعبه للمبتدئين مثلي نرجو الحل

بدأه اورنج مان في 24 أبريل 2011 · 6 رد · 2,996 مشاهدة · في لغة Perl
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اليوم برمجة كود حلو وصغير

$name = $ARGV[0]; #  File
$safe = $ARGV[1];
open (USERFILE, ">$name") || die "Can't open file "; 
@LISTS = <USERFILE>; 
close USERFILE; 
foreach my $L (@LISTS) { 
chomp $L; 
$list = $L; 
}
open (SAFEFILE, ">$safe");
if($list =~ m/(.*?):saa:/) {
	print SAFEFILE $1;
	close SAFEFILE; 
}

طريقة عمله

perl file.pl text.txt safe.txt

محتوى ملف text.txt

 eeee:saa:
arab:saa:
lllllllllllll:saa:
fffffff:saa:

طيب لما اشغل الاداه تشتغل عادي وتمام وتستخرج عادي لكن المشكله

لما افتح ملف المحفوظ safe.txt

اجد محتواه

fffffff

بس وانا ابغاه يحفظ

eeee

arab

llllllllllllll

ffffffff

بلترتيب نرجو الحل تكفون

#2

اكتب على الملف في مود الإضافة

>>
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3

المشكلة ليست مودات الاضافة لانها كلها ستؤدي لنفس الغرض (الفرق سيكون فقط عندما يتم استدعاء الاسكربت من جديد)

>
>>

المشكلة هي هنا فقيمة $list دائما مساوية لقيمة آخر $L وليس هذا المطلوب من الكود على مايبدو

$list = $L;

يجب تبديلها ب

$list = $L."\n".$list;

هذا اقرب شيء ليعمل في الاسكربت.. ممكن تحويله لشيء اكثر نظافة لكن سيؤدي لتغييرات اخر

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#4

للاسف لم تحلو مشكلتي .. وولكن تم حلها

sub file_get_contents

فقط (:

#5

مستحيل... sub file_get_contents لا يقوم بشيء سوى انه يقوم بانشاء subroutine معين و في كودك لا يوجد subroutine اسمه file_get_conents

انت الذي قمت به هو تغيير جذري في برنامجك

كان ممكن تقوم بنفس الشيء بواسطة التغييرات التي قلتلها لك مع تعديل طفيف جدا.

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#6
password123 كتب:

مستحيل... sub file_get_contents لا يقوم بشيء سوى انه يقوم بانشاء subroutine معين و في كودك لا يوجد subroutine اسمه file_get_conents

انت الذي قمت به هو تغيير جذري في برنامجك

كان ممكن تقوم بنفس الشيء بواسطة التغييرات التي قلتلها لك مع تعديل طفيف جدا.

ماضبطت سويت نفس طريقتك ..!!

+

لو طريقتك ضبطة اكتب الكود كامل + جرب الطريقه

اما بلنسبه لـsub file_get_contents

تعال شوف

$name = $ARGV[0]; #  open File
$safe = $ARGV[1]; #  save File
$etc_passwd = file_get_contents($name);

open(USERSFILE, ">>$safe");

while( $arab2000 =~ m{(.*?):saa:(.*)}g ) {

print USERSFILE $1."\n";

}

close(USERSFILE);

# function
sub file_get_contents{
my $filename = $_[0];
open(INFO, $filename);
@lines = <INFO>;
close(INFO);
my $string = "";
foreach (@lines){
$string .= $_;
}
return $string;
}
# _e0F_ !

E0F

#7
password123 كتب:

كذاب

المشكلة ان كودك الاولي كان يحتوي على مشاكل عبيطة اخرى

والمسالة لا تشترط استخدام subroutine

هذا هو كودك القبيح بعد عملية تجميلية سريعة

$name = $ARGV[0]; #  File
$safe = $ARGV[1];
open (USERFILE, "<$name") || die "Can't open file ";
@LISTS = <USERFILE>;
close USERFILE;
open (SAFEFILE, ">$safe");
foreach my $L (@LISTS) {
if($L =~ m/(.*?):(.*?):\n/) {
        print $1,"\n";
}
}
close SAFEFILE;

كودك الثاني ايضا غبي

لماذا تقوم بopen و close على كل ملف؟

هذا سيزيد عدد الsystem calls... والsystem calls دائما بطيئة

والفارق في السرعة كبيــــــر وملحوظ على مستوى العين البشرية

ولهذا السبب وضعت لك open/close خارج الloop بعد عملية التجميل

تصحيح:

* "كل ملف" = "كل سطر"

ملاحظة:

* من باب التبسيط جعلته يطبع على stdout حتى لا تذهب لتفتح ملف اخر حتى ترى الناتج

الله يهديك يااخوي .. انا مبتدى في البيرل ولا استحق كلمة كذاب ..!!

+

انا الي سويتها اني اهم شئ سوية الاداه الي ابغاها ..

والحمد لله نجحة مع ان الاكواد مالها اي صله يعني مجرد تركيب وصدفه ضبطت

مسئلة ان كودي قبيح الحمد لله مابرمجته الا لي هدف منه وهو

cat /etc/passwd

لتصفية اليوزرات في ملف etc/passwd

وهذا شئ نستفيد من احنا الهاكرز .. بكثره

مسئلة السرعه والبطئ ماتهمني ابدا على العموم شاكر لك تصحيحك لي والله يعطيك العافيه

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…