Intermediate Perl. Beyond The Basics of Learning Perl. 2nd Edition

- Autorzy:
- Randal L. Schwartz, brian d foy, Tom Phoenix
- Promocja Przejdź


- Ocena:
- Bądź pierwszym, który oceni tę książkę
- Stron:
- 396
- Dostępne formaty:
-
ePubMobi
Opis książki: Intermediate Perl. Beyond The Basics of Learning Perl. 2nd Edition
This book picks up right where Learning Perl leaves off. With Intermediate Perl, you’ll graduate from short scripts to much larger programs, using features that make Perl a general-purpose language. This gentle but thorough guide introduces you to modules, complex data structures, and object-oriented programming.
Each chapter is small enough to be read in just an hour or two, ending with exercises to help you practice what you’ve learned. If you’re familiar with the material in Learning Perl and have the ambition to go further, Intermediate Perl will teach you most of the core Perl language concepts you need for writing robust programs on any platform.
Topics include:
- Packages and namespaces
- References and scoping, including regular expression references
- Manipulating complex data structures
- Object-oriented programming
- Writing and using modules
- Testing Perl code
- Contributing to CPAN
Just like Learning Perl, material in this book closely follows the popular introductory Perl course the authors have taught since 1991. This second edition covers recent changes to the language up to version 5.14.
Wybrane bestsellery
-
This practical XGBoost guide will put your Python and scikit-learn knowledge to work by showing you how to build powerful, fine-tuned XGBoost models with impressive speed and accuracy. This book will help you to apply XGBoost’s alternative base learners, use unique transformers for model d...
Hands-On Gradient Boosting with XGBoost and scikit-learn. Perform accessible machine learning and extreme gradient boosting with Python Hands-On Gradient Boosting with XGBoost and scikit-learn. Perform accessible machine learning and extreme gradient boosting with Python
-
Perl is a family of high-level, general-purpose, interpreted, dynamic programming languages consisting of Perl 5 and Perl 6. Perl 6 helps developers write concise and declarative code that is easy to maintain. This book is an end-to-end guide that will help non-Perl developers get to grips with t...
Perl 6 Deep Dive. Data manipulation, concurrency, functional programming, and more Perl 6 Deep Dive. Data manipulation, concurrency, functional programming, and more
-
Want to learn how to program and think like a computer scientist? This practical guide gets you started on your programming journey with the help of Perl 6, the younger sister of the popular Perl programming language. Ideal for beginners, this hands-on book includes over 100 exercises with multip...
Think Perl 6. How to Think Like a Computer Scientist Think Perl 6. How to Think Like a Computer Scientist
(0,00 zł najniższa cena z 30 dni)194.65 zł
229.00 zł(-15%) -
Many programmers would love to use Perl for projects that involve heavy lifting, but miss the many traditional algorithms that textbooks teach for other languages. Computer scientists have identified many techniques that a wide range of programs need, such as:Fuzzy pattern matching for text (id...
Mastering Algorithms with Perl. Practical Programming Through Computer Science Mastering Algorithms with Perl. Practical Programming Through Computer Science
(0,00 zł najniższa cena z 30 dni)126.65 zł
149.00 zł(-15%) -
Perl. Mistrzostwo w programowaniu" to wyjątkowa książka pomagająca w samodzielnej nauce, przeznaczona dla programistów, którzy używali już Perla i znają jego podstawy. Podążając za radami z tego przewodnika, nauczysz się definiować procedury i odwracać zwykły model programowania proceduralnego. B...(0,00 zł najniższa cena z 30 dni)
22.00 zł
44.00 zł(-50%) -
Dzięki książce odkryjesz mało znane i mniej typowe zastosowania tego języka. Czytając ją, dowiesz się, w jaki sposób wykorzystać Perl do różnych zadań.(0,00 zł najniższa cena z 30 dni)
19.50 zł
39.00 zł(-50%) -
Droga od pomysłu do gotowej aplikacji jest długa i kręta. Najprawdopodobniej jednym z najdłuższych jej odcinków jest ten poświęcony na programowanie. Sztab ludzi, wiele języków programowania, technologii i narzędzi. Dzięki świetnej znajomości tych narzędzi powstają coraz nowsze, bardziej niezawod...
Wielkie umysły programowania. Jak myślą i pracują twórcy najważniejszych języków Wielkie umysły programowania. Jak myślą i pracują twórcy najważniejszych języków
(0,00 zł najniższa cena z 30 dni)39.50 zł
79.00 zł(-50%) -
If you have a Perl programming question, you'll find the answer quickly in this handy, easy-to-use quick reference. The Perl Pocket Reference condenses and organizes stacks of documentation down to the most essential facts, so you can find what you need in a heartbeat.Updated for Perl 5.14, the 5...
Perl Pocket Reference. Programming Tools. 5th Edition Perl Pocket Reference. Programming Tools. 5th Edition
(0,00 zł najniższa cena z 30 dni)42.42 zł
49.90 zł(-15%) -
If you do systems administration work of any kind, you have to deal with the growing complexity of your environment and increasing demands on your time. Automating System Administration with Perl, Second Edition, not only offers you the right tools for your job, but also suggests the best way to ...
Automating System Administration with Perl. Tools to Make You More Efficient. 2nd Edition Automating System Administration with Perl. Tools to Make You More Efficient. 2nd Edition
(0,00 zł najniższa cena z 30 dni)126.65 zł
149.00 zł(-15%) -
This handy little book offers programmers a complete overview of the syntax and semantics of regular expressions that are at the heart of every text-processing application. Ideal as a quick reference, Regular Expression Pocket Reference covers the regular expression APIs for Perl 5.8, Ruby (inclu...
Regular Expression Pocket Reference. Regular Expressions for Perl, Ruby, PHP, Python, C, Java and .NET. 2nd Edition Regular Expression Pocket Reference. Regular Expressions for Perl, Ruby, PHP, Python, C, Java and .NET. 2nd Edition
(0,00 zł najniższa cena z 30 dni)84.92 zł
99.90 zł(-15%)
Randal L. Schwartz, brian d foy, Tom Phoenix - pozostałe książki
-
If you're just getting started with Perl, this is the book you want—whether you're a programmer, system administrator, or web hacker. Nicknamed "the Llama" by two generations of users, this best seller closely follows the popular introductory Perl course taught by the authors since 1991. Th...(194.65 zł najniższa cena z 30 dni)
194.65 zł
229.00 zł(-15%) -
f you’re ready to get started with Raku (formerly Perl 6), this is the book you want, whether you’re a programmer, system administrator, or web hacker. Raku is a new language—a modern reinvention of Perl suitable for almost any task, from short fixes to complete web applications...
Learning Perl 6. Keeping the Easy, Hard, and Impossible Within Reach Learning Perl 6. Keeping the Easy, Hard, and Impossible Within Reach
(194.65 zł najniższa cena z 30 dni)194.65 zł
229.00 zł(-15%) -
Take the next step toward Perl mastery with advanced concepts that make coding easier, maintenance simpler, and execution faster. Mastering Perl isn't a collection of clever tricks, but a way of thinking about Perl programming for solving debugging, configuration, and many other real-world proble...(143.65 zł najniższa cena z 30 dni)
152.15 zł
179.00 zł(-15%) -
Adopted as the undisputed Perl bible soon after the first edition appeared in 1991, Programming Perl is still the go-to guide for this highly practical language. Perl began life as a super-fueled text processing utility, but quickly evolved into a general purpose programming language that’s...
Programming Perl. Unmatched power for text processing and scripting. 4th Edition Programming Perl. Unmatched power for text processing and scripting. 4th Edition
(194.65 zł najniższa cena z 30 dni)194.65 zł
229.00 zł(-15%) -
Learning Perl, popularly known as "the Llama," is the book most programmers rely on to get started with Perl. The bestselling Perl tutorial since it was first published in 1993, this new fifth edition covers recent changes to the language up to Perl 5.10. This book reflects the combined experienc...(118.15 zł najniższa cena z 30 dni)
126.65 zł
149.00 zł(-15%) -
Przewodnik dla początkujących programistów aplikacji internetowych, zawierający wszystkie informacje niezbędne do rozpoczęcia pracy i tworzenia programów w języku Perl.
-
Perl is a versatile, powerful programming language used in a variety of disciplines, ranging from system administration to web programming to database manipulation. One slogan of Perl is that it makes easy things easy and hard things possible. This book is about making the leap from the easy th...(109.65 zł najniższa cena z 30 dni)
109.65 zł
129.00 zł(-15%) -
If you ask Perl programmers today what book they relied on most when they were learning Perl, you'll find that an overwhelming majority will name Learning Perl--also known affectionately as "the Llama." The first edition of Learning Perl appeared in 1993 and has been a bestseller ever since. Writ...(109.65 zł najniższa cena z 30 dni)
109.65 zł
129.00 zł(-15%)
Ebooka przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video zobaczysz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP4 (pliki spakowane w ZIP)
Szczegóły książki
- ISBN Ebooka:
- 978-14-493-4380-4, 9781449343804
- Data wydania ebooka:
-
2012-07-26
Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@helion.pl.
- Język publikacji:
- angielski
- Rozmiar pliku ePub:
- 1.9MB
- Rozmiar pliku Mobi:
- 5.6MB
Spis treści książki
- Intermediate Perl
- Foreword
- Preface
- Structure of This Book
- Conventions Used in This Book
- Using Code Examples
- Safari Books Online
- How to Contact Us
- Acknowledgments
- 1. Introduction
- What Should You Know Already?
- strict and warnings
- Perl v5.14
- A Note on Versions
- What About All Those Footnotes?
- Whats With the Exercises?
- How to Get Help
- What If Im a Perl Course Instructor?
- Exercises
- 2. Using Modules
- The Standard Distribution
- Exploring CPAN
- Using Modules
- Functional Interfaces
- Selecting What to Import
- Object-Oriented Interfaces
- A More Typical Object-Oriented Module: Math::BigInt
- Fancier Output with Modules
- Whats in Core?
- The Comprehensive Perl Archive Network
- Installing Modules from CPAN
- CPANminus
- Installing Modules Manually
- Setting the Path at the Right Time
- Setting the Path Outside the Program
- Extending @INC with PERL5LIB
- Extending @INC on the Command Line
- local::lib
- Exercises
- 3. Intermediate Foundations
- List Operators
- List Filtering with grep
- Transforming Lists with map
- List Operators
- Trapping Errors with eval
- Dynamic Code with eval
- The do Block
- Exercises
- 4. Introduction to References
- Doing the Same Task on Many Arrays
- PeGS: Perl Graphical Structures
- Taking a Reference to an Array
- Dereferencing the Array Reference
- Getting Our Braces Off
- Modifying the Array
- Nested Data Structures
- Simplifying Nested Element References with Arrows
- References to Hashes
- Checking Reference Types
- Exercises
- 5. References and Scoping
- More than One Reference to Data
- What If That Was the Name?
- Reference Counting and Nested Data Structures
- When Reference Counting Goes Bad
- Creating an Anonymous Array Directly
- Creating an Anonymous Hash
- Autovivification
- Autovivification and Hashes
- Exercises
- 6. Manipulating Complex Data Structures
- Using the Debugger to View Complex Data
- Viewing Complex Data with Data::Dumper
- Other Dumpers
- Marshalling Data
- Storing Complex Data with Storable
- YAML
- JSON
- Using the map and grep Operators
- Applying a Bit of Indirection
- Selecting and Altering Complex Data
- Exercises
- 7. Subroutine References
- Referencing a Named Subroutine
- Anonymous Subroutines
- Callbacks
- Closures
- Returning a Subroutine from a Subroutine
- Closure Variables as Inputs
- Closure Variables as Static Local Variables
- state Variables
- Finding Out Who We Are
- Enchanting Subroutines
- Dumping Closures
- Exercise
- 8. Filehandle References
- The Old Way
- The Improved Way
- Filehandles to Strings
- Processing Strings Line by Line
- Collections of Filehandles
- IO::Handle and Friends
- IO::File
- IO::Scalar
- IO::Tee
- IO::Pipe
- IO::Null and IO::Interactive
- Directory Handles
- Directory Handle References
- Exercises
- 9. Regular Expression References
- Before Regular Expression References
- Precompiled Patterns
- Regular Expression Options
- Applying Regex References
- Regexes as Scalars
- Build Up Regular Expressions
- Regex-Creating Modules
- Using Common Patterns
- Assembling Regular Expressions
- Exercises
- 10. Practical Reference Tricks
- Fancier Sorting
- Sorting with Indices
- Sorting Efficiently
- The Schwartzian Transform
- Multilevel Sort with the Schwartzian Transform
- Recursively Defined Data
- Building Recursively Defined Data
- Displaying Recursively Defined Data
- Avoiding Recursion
- The Breadth-First Solution
- Exercises
- 11. Building Larger Programs
- The Cure for the Common Code
- Inserting Code with eval
- Using do
- Using require
- The Problem of Namespace Collisions
- Packages as Namespace Separators
- Scope of a Package Directive
- Packages and Lexicals
- Package Blocks
- Exercises
- 12. Creating Your Own Perl Distribution
- Perls Two Build Systems
- Inside Makefile.PL
- Inside Build.PL
- Perls Two Build Systems
- Our First Distribution
- h2xs
- Module::Starter
- Custom Templates
- Inside Your Perl Distribution
- The META File
- Adding Additional Modules
- Inside a Module
- Plain Ol Documentation
- Pod Command Paragraphs
- Pod Paragraphs
- Pod Formatting Codes
- Checking the Pod Format
- The Module Code
- Module Building Summary
- Creating a Module::Build Distribution
- Creating a ExtUtils::Makemaker Distribution
- Exercises
- 13. Introduction to Objects
- If We Could Talk to the Animals. . .
- Introducing the Method Invocation Arrow
- The Extra Parameter of Method Invocation
- Calling a Second Method to Simplify Things
- A Few Notes About @ISA
- Overriding the Methods
- Starting the Search from a Different Place
- The SUPER Way of Doing Things
- What to Do with @_
- Where We Are
- Our Barnyard Summary
- Exercises
- 14. Introduction to Testing
- Why Should We Test?
- The Perl Testing Process
- Test Anywhere Protocol
- The Art of Testing
- A Test Example
- The Test Harness
- The Standard Tests
- Checking that Modules Compile
- The Boilerplate Tests
- The Pod Tests
- Adding Our First Tests
- Measuring Our Test Coverage
- Subroutine Coverage
- Statement Coverage
- Branch Coverage
- Conditional Coverage
- Exercises
- 15. Objects with Data
- A Horse Is a Horse, of Course of CourseOr Is It?
- Invoking an Instance Method
- Accessing the Instance Data
- How to Build a Horse
- Inheriting the Constructor
- Making a Method Work with Either Classes or Instances
- Adding Parameters to a Method
- More Interesting Instances
- A Horse of a Different Color
- Getting Our Deposit Back
- Dont Look Inside the Box
- Faster Getters and Setters
- Getters that Double as Setters
- Restricting a Method to Class Only or Instance Only
- Exercise
- 16. Some Advanced Object Topics
- UNIVERSAL Methods
- Testing Our Objects for Good Behavior
- The Last Resort
- Using AUTOLOAD for Accessors
- Creating Getters and Setters More Easily
- Multiple Inheritance
- Exercises
- 17. Exporter
- What use Is Doing
- Importing with Exporter
- @EXPORT and @EXPORT_OK
- Grouping with %EXPORT_TAGS
- Custom Import Routines
- Exercises
- 18. Object Destruction
- Cleaning Up After Ourselves
- Nested Object Destruction
- Beating a Dead Horse
- Indirect Object Notation
- Additional Instance Variables in Subclasses
- Using Class Variables
- Weakening the Argument
- Exercise
- 19. Introduction to Moose
- Making Animals with Moose
- Roles Instead of Inheritance
- Default Values
- Constraining Values
- Wrapping Methods
- Read-Only Attributes
- Making Animals with Moose
- Improving the Race Horse
- Further Study
- Exercises
- 20. Advanced Testing
- Skipping Tests
- Testing Object-Oriented Features
- Grouping Tests
- Testing Large Strings
- Testing Files
- Testing STDOUT or STDERR
- Using Mock Objects
- Writing Our Own Test::* Modules
- Exercises
- 21. Contributing to CPAN
- The Comprehensive Perl Archive Network
- Getting Prepared
- How PAUSE Works
- The Indexer
- Module Maintainers
- Before We Start Work
- Preparing the Distribution
- Create or Update the README
- Check the Build File
- Update the Manifest
- Increase the Version String
- Test the Distribution
- Uploading the Distribution
- Testing on Multiple Platforms
- Announcing the Module
- Exercises
- A. Answers to Exercises
- Answers for Chapter 1
- Exercise 1
- Exercise 2
- Answers for Chapter 1
- Answers for Chapter 2
- Exercise 1
- Exercise 2
- Exercise 3
- Answers for Chapter 3
- Exercise 1
- Exercise 2
- Answers for Chapter 4
- Exercise 1
- Exercise 2
- Exercise 3
- Answers for Chapter 5
- Exercise 1
- Exercise 2
- Exercise 3
- Answers for Chapter 6
- Exercise 1
- Exercise 2
- Answer for Chapter 7
- Exercise 1
- Answers for Chapter 8
- Exercise 1
- Exercise 2
- Exercise 3
- Answers for Chapter 9
- Exercise 1
- Exercise 2
- Exercise 3
- Answers for Chapter 10
- Exercise 1
- Exercise 2
- Exercise 3
- Exercise 4
- Exercise 5
- Answers for Chapter 11
- Exercise 1
- Exercise 2
- Answers for Chapter 12
- Exercise 1
- Exercise 2
- Exercise 3
- Answers for Chapter 13
- Exercise 1
- Exercise 2
- Exercise 3
- Answers for Chapter 14
- Exercise 1
- Exercise 2
- Exercise 3
- Exercise 4
- Exercise 5
- Answer for Chapter 15
- Exercise 1
- Answers for Chapter 16
- Exercise 1
- Exercise 2
- Answers for Chapter 17
- Exercise 1
- Exercise 2
- Exercise 3
- Answers for Chapter 18
- Exercise 1
- Answers for Chapter 19
- Exercise 1
- Exercise 2
- Answers for Chapter 20
- Exercise 1
- Exercise 2
- Answers for Chapter 21
- Exercise 1
- Exercise 2
- Exercise 3
- Exercise 4
- Exercise 5
- Exercise 6
- Exercise 7
- Index of Modules in this Book
- Index
- About the Authors
- Colophon
- Copyright
O'Reilly Media - inne książki
-
If you're a PHP developer looking for proven solutions to common problems, this cookbook provides code recipes to help you resolve numerous scenarios. By leveraging modern versions of PHP through version 8.1, these self-contained recipes provide fully realized solutions that can help you solve si...(0,00 zł najniższa cena z 30 dni)
220.15 zł
259.00 zł(-15%) -
Over the past 10 years, data analytics and data visualization have become essential components of an enterprise information strategy. And yet, the adoption of data analytics has remained remarkably static, reaching no more than 30% of potential users. This book explores the most important techniq...(0,00 zł najniższa cena z 30 dni)
194.65 zł
229.00 zł(-15%) -
Data lakes and warehouses have become increasingly fragile, costly, and difficult to maintain as data gets bigger and moves faster. Data meshes can help your organization decentralize data, giving ownership back to the engineers who produced it. This book provides a concise yet comprehensive over...(0,00 zł najniższa cena z 30 dni)
220.15 zł
259.00 zł(-15%) -
If you're planning, building, or implementing a cloud strategy that supports digitalization for your financial services business, this invaluable guide clearly sets out the crucial factors and questions to consider first. With it, you'll learn how to avoid the costly and time-consuming pitfalls a...
Digitalization of Financial Services in the Age of Cloud Digitalization of Financial Services in the Age of Cloud
(0,00 zł najniższa cena z 30 dni)152.15 zł
179.00 zł(-15%) -
Java developers usually tackle the complexity of software development through object-oriented programming (OOP). But not every problem is a good match for OOP. The functional programming (FP) paradigm offers you another approach to solving problems, and Java provides easy-to-grasp FP tools such a...(0,00 zł najniższa cena z 30 dni)
245.65 zł
289.00 zł(-15%) -
As legacy and other critical systems continue to migrate online, the need for continuous operation is imperative. Code has to handle data issues as well as hard external problems today, including outages of networks, storage systems, power, and ancillary systems. This practical guide provides sys...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
Do you want to write beautiful, structured, and maintainable JavaScript by applying modern design patterns to the language? Do you want clean, efficient, manageable code? Want to stay up-to-date with the latest best practices? If so, the updated second edition of Learning JavaScript Design Patter...(0,00 zł najniższa cena z 30 dni)
220.15 zł
259.00 zł(-15%) -
Between major privacy regulations like the GDPR and CCPA and expensive and notorious data breaches, there has never been so much pressure to ensure data privacy. Unfortunately, integrating privacy into data systems is still complicated. This essential guide will give you a fundamental understandi...(0,00 zł najniższa cena z 30 dni)
220.15 zł
259.00 zł(-15%) -
This essential guide covers all aspects of Linux system administration, from user maintenance, backups, filesystem housekeeping, storage management, and network setup to hardware and software troubleshooting and some application management. It's both a practical daily reference manual for sysadmi...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
The past decade has witnessed the broad adoption of artificial intelligence and machine learning (AI/ML) technologies. However, a lack of oversight in their widespread implementation has resulted in some incidents and harmful outcomes that could have been avoided with proper risk management. Befo...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%)
Dzieki opcji "Druk na żądanie" do sprzedaży wracają tytuły Grupy Helion, które cieszyły sie dużym zainteresowaniem, a których nakład został wyprzedany.
Dla naszych Czytelników wydrukowaliśmy dodatkową pulę egzemplarzy w technice druku cyfrowego.
Co powinieneś wiedzieć o usłudze "Druk na żądanie":
- usługa obejmuje tylko widoczną poniżej listę tytułów, którą na bieżąco aktualizujemy;
- cena książki może być wyższa od początkowej ceny detalicznej, co jest spowodowane kosztami druku cyfrowego (wyższymi niż koszty tradycyjnego druku offsetowego). Obowiązująca cena jest zawsze podawana na stronie WWW książki;
- zawartość książki wraz z dodatkami (płyta CD, DVD) odpowiada jej pierwotnemu wydaniu i jest w pełni komplementarna;
- usługa nie obejmuje książek w kolorze.
W przypadku usługi "Druk na żądanie" termin dostarczenia przesyłki może obejmować także czas potrzebny na dodruk (do 10 dni roboczych)
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka, którą chcesz zamówić pochodzi z końcówki nakładu. Oznacza to, że mogą się pojawić drobne defekty (otarcia, rysy, zagięcia).
Co powinieneś wiedzieć o usłudze "Końcówka nakładu":
- usługa obejmuje tylko książki oznaczone tagiem "Końcówka nakładu";
- wady o których mowa powyżej nie podlegają reklamacji;
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.


Oceny i opinie klientów: Intermediate Perl. Beyond The Basics of Learning Perl. 2nd Edition Randal L. Schwartz, brian d foy, Tom Phoenix (0)
Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.