Điều này có thể do phương pháp được kế thừa từ một lớp cơ sở. Tuy nhiên, trong các tình huống cực kỳ kỳ lạ, nó cũng có thể được tiêm vào không gian tên của mô-đun động mà khó có thể hình dung được.
Bạn có thể tìm thấy phụ của bạn bằng cách tìm kiếm bạo lực hoặc bằng cách tìm ra lớp cơ sở của một mô-đun (và có thể cao hơn chuỗi thừa kế) và chỉ tìm kiếm mã lớp cơ sở. Tôi sẽ hiển thị như thế nào để làm cả hai:
tìm kiếm lực lượng Brute: Đây có lẽ là giải pháp đơn giản nhất trong những trường hợp phức tạp kể từ khi tiểu có thể đã được tiêm vào không gian tên của mô-đun tự động bởi mô-đun không tổ tiên và việc tìm kiếm mô-đun tổ tiên không dễ dàng 100% do nhiều cách xác định thừa kế có thể đã được sử dụng (sử dụng cơ sở, sử dụng phụ huynh, công cụ Moose, công cụ AUTOLOADED)
Đầu tiên, tìm hiểu các mô-đun nào khác được tải bằng My :: Mô-đun
perl -e 'use My::Module::DB::raw_info; print "$INC{$_}\n" foreach keys %INC'
này sẽ in ra vị trí của tất cả những mô-đun
Sau đó, tìm kiếm định nghĩa phụ ở tất cả các mã đó (sau đây phải được tất cả một dòng, tôi chia nó lên để có thể đọc thành 2 dòng):
grep search_like
`perl -e 'use My::Module::DB::raw_info; print "$INC{$_}\n" foreach keys %INC'`
Nếu đây trả về quá nhiều kết quả, thay đổi grep để
grep "sub search_like"
`perl -e 'use My::Module::DB::raw_info; print "$INC{$_}\n" foreach keys %INC'`
này sẽ tìm thấy bạn định nghĩa trong bất cứ mô-đun của bạn :: Module :: DB :: raw_info thừa hưởng fro m mà không thực sự phân tích mã mô-đun cho kế thừa.
Inheritance:
Tìm hiểu mẹ của mô-đun sử dụng ISA
như sau:
perl -e 'use My::Module::DB::raw_info; print "@My::Module::DB::raw_info::ISA\n";'
Để làm rõ, điều này chỉ làm việc cho module "cổ điển thừa hưởng" sử dụng @ISA
, công cụ không Moose . Nó cũng không hoạt động nếu thường trình được gọi bằng cách sử dụng AutoLoader hoặc được tiêm vào bảng biểu tượng động mà có thể xảy ra trong bất kỳ mã nào, không nhất thiết phải trong mã cha.
cũng "sử dụng cơ sở ..." – Arkadiy
"mở rộng" là một điều Moose. =). –
không sử dụng nền tảng; _; , sử dụng cha mẹ! –